2013-11-16 4 views
-1

Мне нужно сгенерировать некоторые диаграммы и отчеты, но только когда моя БД изменена. Поскольку время, необходимое для создания отчетов, колеблется между 2 и 4 секундами, и число отчетов меняется тоже, я думаю использовать cron, который проверяет модификации БД. Дело в том, что я не хочу начинать генерировать другой отчет, в то время как другой работает. Другими словами, я не хочу запускать другой процесс, пока предыдущий все еще работает. Как я могу это сделать?одиночный процесс на php

мои хроны выглядеть следующим образом:

*/1 * * * * php /home/john/public_html/reportsGeneratorByCron.php 
+2

Вы можете поместить некоторый флаг в базе данных или в каком-то файле на диске, который вы должны проверить с другими чтобы выяснить, разблокирована ли она. –

+0

Я бы исследовал с помощью триггеров базы данных, чтобы добавить запрос отчета в очередь, а затем выполнить процесс, который считывает запросы отчетов из очереди и обрабатывает их. Это не похоже на что-то для работы cron. –

+0

взгляните на такой подход http://stackoverflow.com/questions/11357187/php-how-do-implement-queue-processing-in-php –

ответ

0
*/1 * * * * pgrep reportsGeneratorByCron > /dev/null || php /home/john/public_html/reportsGeneratorByCron.php 
1

Посмотрите на Fat Controller, который работает как CRON, но позволяет задать время между одним процессом, закончившимся и еще один запуском, а не время, между запуском, как CRON.

Посмотрите на сайте - есть много документации, примеры и случаи использования:

http://fat-controller.sourceforge.net/

Смежные вопросы