balboa

Планировщик для запуска цепочки скриптов php

4 сообщения в этой теме

Всем привет

Ищу php скрипт/планировщик заданий для, запуска исполнения цепочки php скриптов - один за другим.

Т.е чтобы запустив этот планировщик, далее цепочкой один за другим, исполнялись бы все что в задании. Т.е следующий не начнет исполнятся, пока не закончит предыдущий.

 

Сейчас ежедневно исполняется 11 скриптов, запускаю их через Cron по таймеру, но это не всегда удобно, т.к бывает, что время на выполнение не всегда одинаковой (разный объем информации) +/- 5-10 мин. и получается, так, что следующий скрипт начинает работать до завершения предыдущего.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, balboa сказал:

Всем привет

Ищу php скрипт/планировщик заданий для, запуска исполнения цепочки php скриптов - один за другим.

Т.е чтобы запустив этот планировщик, далее цепочкой один за другим, исполнялись бы все что в задании. Т.е следующий не начнет исполнятся, пока не закончит предыдущий.

 

Сейчас ежедневно исполняется 11 скриптов, запускаю их через Cron по таймеру, но это не всегда удобно, т.к бывает, что время на выполнение не всегда одинаковой (разный объем информации) +/- 5-10 мин. и получается, так, что следующий скрипт начинает работать до завершения предыдущего.

в первом скрипте в конце инклудите второй, во втором инклудите третий

таким образом пока 1 не закончит выполнение и не заинклудит следующие то продолжения не будет

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
On 02.10.2018 at 9:54 PM, balboa said:

Всем привет

Ищу php скрипт/планировщик заданий для, запуска исполнения цепочки php скриптов - один за другим.

Т.е чтобы запустив этот планировщик, далее цепочкой один за другим, исполнялись бы все что в задании. Т.е следующий не начнет исполнятся, пока не закончит предыдущий.

 

Сейчас ежедневно исполняется 11 скриптов, запускаю их через Cron по таймеру, но это не всегда удобно, т.к бывает, что время на выполнение не всегда одинаковой (разный объем информации) +/- 5-10 мин. и получается, так, что следующий скрипт начинает работать до завершения предыдущего.

все скрипты кладете в bash скрипт (.sh) и sh в крон каждую минуту, используя lockf

выглядеть будет так:

* * * * * /usr/bin/lockf -kt0 /tmp/test.lock /bin/sh /home/domen/cron/test.sh

таким образом ваш скрипт будет пытаться отработать каждую минуту, но не запустится если не выполнился предыдущий :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создаем папочку lock.

Запускаем все скрипты сразу (каждый час). Для запуска каждую минуту нужно додумать систему локов.


По окончанию первого скрипта кладем в lock файлик-метку, например finish1. При этом, второй уже будет запущен и если нет файла finish1 будет спать 3-5 секунд (sleep(3)) и заного проверять наличие finish1 и так в цикле, пока не появится finish1. Как только появится файл - скрипт начнет свою работу, при этом удалит finish1. После чего закончил работу второй скрипт кладем файл finish2. Как только появляется finish2, начинает работать (точнее, начинает выполнять основной функционал, потому что он и так будет запущен, только будет спать, чекая каждые 3 секунды нужный файл) третий скрипт. И т.д. В конце удаляем файл finishX.

Единственная проблема, в этом случае, если нужно больше 1 часа для выполнения всей цепочки. Тогда нужно думать продумать систему локов так, чтобы цепочка не запускалась заного, пока не отработает предыдущая.

Прелесть этого подхода в том, что скрипты будут выполняться с интервалом максимум X секунд, а X настраиваете вы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу