Sign in to follow this  
Followers 0
balboa

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

4 posts in this topic

Всем привет

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

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

 

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

Share this post


Link to post
Share on other sites
2 часа назад, balboa сказал:

Всем привет

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

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

 

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

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

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

Share this post


Link to post
Share on other sites
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

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

Share this post


Link to post
Share on other sites

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

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


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

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.