Как запускать Zend Framework действие (внутри контроллера индекса) cron каждые 12 часов? - PullRequest
5 голосов
/ 29 июня 2011

Как запускать действие Zend Framework (внутри контроллера индекса) cron каждые 12 часов?

Корпус:

  1. У меня есть базовый (без модулей) Zend-проект (1.11), созданный инструментом zf.

  2. Внутри основного IndexController существует cronAction () - url http://mydomain/index/cron.

  3. Требуется запускать cronAction () один раз в 12 часов cron.

Спасибо

Ответы [ 3 ]

13 голосов
/ 29 июня 2011

Найдите файл crontab и добавьте следующую строку:

0 0,12 * * * curl --silent --compressed http://mydomain/index/cron

Вы также можете сделать это с помощью других инструментов, таких как lynx или wget, но не обязательно скручивать. Выше приведен только пример.

5 голосов
/ 24 апреля 2012

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

Путем создания файла в общей папке с содержимым ниже. Пример: cron.php

 <?php

 // Define path to application directory
 defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

 // Define application environment
 defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'));

 // Ensure library/ is on include_path
 set_include_path(implode(PATH_SEPARATOR, array(
        realpath(APPLICATION_PATH . '/../library'),
        get_include_path(),
    )));

 /** Zend_Application */
 require_once 'Zend/Application.php';

 // Create application, bootstrap, and run
 $application = new Zend_Application(
            APPLICATION_ENV,
            APPLICATION_PATH . '/configs/application.ini'
 );
 $application->bootstrap();

 $model = new Application_Model_Name();
 $model->runTask();

Затем добавьте запись с вкладкой cron

0 0,12 * * * php /path/to/your/project/cron.php

Это должно работать лучше, чем первый ответ, так как вы будете работать с PHP CLI, тогда у вас не будет ограничения по времени выполнения php-скрипта, если ваш скрипт занимает больше одной минуты и вам не нужно сетевое соединение для запуска эта работа cron

0 голосов
/ 22 мая 2014

В Zend Framework 2 Вы можете запустить задание cron, используя консольные маршруты.Посмотрите на пример, размещенный здесь: http://collabedit.com/58v4v

...