любая альтернатива crontab, которую вы можете запускать, останавливать, приостанавливать, возобновлять, переназначать через API в PHP?

Знаете ли вы альтернативу crontab, которую вы можете запускать, останавливать, приостанавливать, возобновлять, переназначать через API в PHP?

Или это возможно в crontab?

У меня есть длинный php-скрипт, который выполняется cron. Мне пришлось бы приостановить cron (во время выполнения сценария) или изменить расписание, чтобы он не запускал повторно мой php-скрипт, пока он все еще выполняется. После запуска скрипта я снова запускаю cron.


person Aivan Monceller    schedule 04.07.2011    source источник
comment
Проблема одновременно работающих блокировок должна (и может быть) решена в самом скрипте, без редактирования расписания.   -  person zerkms    schedule 04.07.2011


Ответы (3)


Вы можете использовать The Fat Controller, который представляет собой демон, написанный на C, который может запускать практически все, и повторять его. Он абстрагирует всю логику процесса, поэтому вы можете просто сохранить бизнес-логику в своем PHP-скрипте. Он полностью настраивается, включая установку интервала между завершением одного экземпляра и запуском следующего, более длительный интервал в случае ошибки, ведение журнала и, если вы хотите, возможность запускать несколько экземпляров скрипта параллельно.

Я боюсь, что веб-сайт все еще немного примитивен, но там много информации, и если вам нужна помощь или у вас есть какие-либо вопросы, просто напишите мне - я буду рад помочь!

http://www.4pmp.com/fatcontroller/

person SlappyTheFish    schedule 04.07.2011
comment
вау, спасибо. свяжусь с вами, когда у меня возникнут проблемы :) - person Aivan Monceller; 04.07.2011
comment
Добро пожаловать — я надеюсь запустить новый веб-сайт и версию 0.0.3 на следующей неделе или около того. - person SlappyTheFish; 04.07.2011
comment
Описание вашего проекта и ваша статья 4pmp.com/2011/02/daemonize -php-properly это именно то, что я хочу сделать, буду смотреть ваш проект - person Aivan Monceller; 04.07.2011
comment
Я очень рада, что проект вам полезен! Если у вас есть какие-либо предложения, комментарии или идеи, просто дайте мне знать - я буду рад услышать любые отзывы, хорошие или плохие, чтобы сделать проект еще лучше! - person SlappyTheFish; 04.07.2011
comment
так как у меня нет вашей электронной почты, я просто оставлю комментарии к вашему сайту под именем geocine - person Aivan Monceller; 04.07.2011
comment
ссылка не работает, основной сайт тоже - person beppe9000; 11.11.2019

Возможно, вы захотите добавить логику блокировки в свой скрипт PHP. . Например. сценарий может проверить наличие файла блокировки и прервать работу, если он присутствует. В противном случае он создаст этот файл и удалит его после того, как это будет сделано. Вы можете добавить в свой сценарий дополнительную логику, например, проверить, когда он последний раз запускался, и прервать его, если последний раз он запускался менее 1 часа назад.

Что касается задания cron, вы можете установить агрессивное время (скажем, каждые 5 минут), исходя из предположения, что скрипт отвечает за проверку блокировок, время последнего выполнения и т. д.

person Salman A    schedule 04.07.2011
comment
Например. сценарий может проверить наличие файла блокировки и прервать работу, если он присутствует. --- Я бы добавил, что уже есть flock() для целей блокировки, что является решением без гонок. Но для этой проблемы даже файл блокировки может быть хорошим решением. +1 - person zerkms; 04.07.2011

Вы должны попробовать очередь заданий.

Некоторые из них реализованы на чистом PHP (например, Zend Job Queue) или установите службу демона, например beanstalkd (с PHP-API, например Pheanstalk.)

person Christian Studer    schedule 04.07.2011
comment
Я уже использую редуктор. Мне просто нужно запустить php-скрипт (через cron), который проверяет базу данных на наличие настроек, когда будут запускаться задачи. Затем php-скрипт отправит это задание в gearman. Мой php-скрипт действует как клиент для Gearman. - person Aivan Monceller; 04.07.2011