Jump to content
Sign in to follow this  
balboa

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

Recommended Posts

Всем привет

Ищу 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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...