Intereting Posts
Приращения Письма, подобные цифрам Всегда ли хранить пароль в виде обычного текста в переменной php или константе php? Laravel 5.1: htmlentities () ожидает, что параметр 1 будет строкой, заданный массив Как отображать обычную цену и цену продажи на страницах одного продукта и цикла? Crypt () генерация соли и шифрование паролей, хорошо выполненные? Показать диалоговое окно «Сохранить как» при загрузке файла из iframe через PHP Определение URL-адреса пользователя Преобразование значений разделенных запятыми значений в двойные кавычки PHP socket_write работает в первый раз, но Слияние двух файлов xml на основе общего атрибута PHP / mysql получает количество затронутых строк оператора UPDATE Проблема при записи файлов со специальными символами в PHP + Apache – проблема с кодировкой Yii: любое расширение для реализации встроенной карты google Выполняя тот же запрос PDO (с изменяющимися параметрами), я вызываю prepare () каждый раз или только один раз? как заполнить при выпадающем основании значение из другого выпадающего списка в php и jquery?

Как запустить работу cron с помощью zend framework 2

У меня есть приложение, построенное в Zend Framework 2. Я хотел бы установить задание cron для обновления моих продуктов. Я знаю, что сценарии, такие как это, должны запускаться из-за пределов общедоступной папки, но, к сожалению, мой скрипт в cron должен использовать файлы фреймворка.
Как я могу это сделать?
Единственный способ, которым я понял, – запустить скрипт из-за пределов общедоступной папки, затем добавить хэш или пароль и перенаправить на

www.domain.com/cron/test 

Поэтому у меня будут все функциональные возможности.
Будет ли это безопасно? Может быть, есть другой способ?

Related of "Как запустить работу cron с помощью zend framework 2"

Я настоятельно рекомендую использовать CLI для такого требования.

  1. Создайте ConsoleController с updateAction () внутри модуля приложения.
  2. Добавьте консольный маршрут к модулю вашего модуля module.config.php :

     array( 'router' => array( 'routes' => array( ... ) ), 'console' => array( 'router' => array( 'routes' => array( 'cronroute' => array( 'options' => array( 'route' => 'updateproducts', 'defaults' => array( 'controller' => 'Application\Controller\Console', 'action' => 'update' ) ) ) ) ) ) ); 
  3. Теперь откройте терминал и

     $ cd /path/to/your/project $ php public/index.php updateproducts 

Это все. Надеюсь, поможет.

Я нашел решение в collabnet (который сейчас мертв).

Я копирую решение здесь, поскольку ColabEdit иногда удаляет сообщения:

 <?php /* Cron directory setup: Cron config module.config.php src Cron Controller IndexController.php autoload_classmap.php Module.php NOTES: Remember to include the Cron module in the main config file (trunk/config/application.config.php) Once you have the route in place, write your cron and call it from your webhost cron manager. */ // Cron/config/module.config.php return array( // Placeholder for console routes 'controllers' => array( 'invokables' => array( 'Cron\Controller\IndexController' => 'Cron\Controller\IndexController' ), ), 'console' => array( 'router' => array( 'routes' => array( //CRON RESULTS SCRAPER 'my-first-route' => array( 'type' => 'simple', // <- simple route is created by default, we can skip that 'options' => array( 'route' => 'hello', 'defaults' => array( 'controller' => 'Cron\Controller\IndexController', 'action' => 'index' ) ) ) ), ), ), ); <?php // Cron/src/Cron/Controller/IndexController.php namespace Cron\Controller; use Zend\Mvc\Controller\AbstractActionController; class IndexController extends AbstractActionControlle { public function indexAction() { echo "hello"; echo "\r\n"; } } From the console navigate to trunk (or public_html) (the directory before public) and run: path/to/trunk>php public/index.php hello hello path/to/trunk>