[Php] Создание cronjob с Zend Framework


Answers

Для Zend Framework я в настоящее время использую приведенный ниже код. Скрипт включает только файл портала index.php, где загружаются все пути, среда и другой код Zendy. Определяя константу в скрипте cron, мы отменяем последний шаг, на котором выполняется приложение.

Это означает, что приложение только настроено, даже не загружено. На этом этапе мы начинаем загружать необходимые ресурсы, и это

//public/index.php

if(!defined('DONT_RUN_APP') || DONT_RUN_APP == false) {  
    $application->bootstrap()->run();
}

// application/../cron/cronjob.php

define("DONT_RUN_APP",true);
require(realpath('/srv/www/project/public/index.php'));
$application->bootstrap('config');
$application->bootstrap('db');

//cron code follows
Question

Я пытаюсь написать контроллер cronjob, поэтому я могу вызвать один веб-сайт и выполнить все модули cronjob.php. Теперь моя проблема в том, как мне это сделать?

Будет ли это завиток, поэтому я также могу подсчитать ошибки и успехи?

[Обновить]

Наверное, я недостаточно объяснил это.

Я хочу сделать один файл, который я могу назвать как из http: // server / cronjob, а затем заставить его выполнить каждый /application/modules/*/controller/CronjobController.php или сделать другой способ сделать это, чтобы все cronjobs не находятся в одном месте, но там же находится модуль. Это дало бы мне преимущество: если модуль не существует, он не пытается запустить свой cronjob.

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

И я хочу уметь определять, сколько cronjobs побежало успешно и сколько не было










Кто-то упомянул эту запись в блоге пару дней назад по fw-general (список рассылки, который я рекомендую читать, когда вы используете Zend Framework).

Существует также предложение для Zend_Controller_Request_Cli , которое должно решить это раньше или позже.




Вы можете настроить таблицу базы данных для хранения ссылок на скрипты cronjob (в своих модулях), а затем использовать команду exec с возвращаемым значением при передаче / сбое.




Мое решение:

  • curl / cron
  • Глобальный метод cron будет включать все контроллеры
  • Проверьте, есть ли у каждого из контроллеров -> метод cron
  • Если они есть, запустите их.

Открытый cron url (для завитки) не является проблемой, существует множество способов избежать злоупотреблений. Как сказано, проверка удаленного IP-адреса является самой простой.