В ZF2 нет службы "cron job" для автоматического запуска сценариев в определенное время.
Задание Cron — это задача, выполняемая в определенное время и обычно настраиваемая на уровне операционной системы. В unix это делается через crontab, в windows можно использовать планировщик задач. В ZF2 нет ничего, что запускало бы ваши скрипты ровно в 12:00 и 12:10.
Вариант 1. Задание Cron через панель администратора
Для большинства сред хостинга вы можете настроить «задание cron» через панель администратора вашего веб-сайта (например, Plesk или cPanel). Там вы сможете запланировать задание, введя время и команду для запуска. Когда вы создаете задание cron таким образом, имейте в виду, что вы будете вводить команду, которая будет выполняться через командную строку. Обычно это прямой вызов php для выполнения определенного скрипта, но вы также можете использовать wget для получения любой URL из Интернета. Если вы напрямую вызываете php, вам нужно настроить маршрут консоли в соответствии с ответом Зденека.
/usr/bin/php /path/to/zf2/public/index.php myIndexConsoleRoute
or
wget http://yoursite.com/fetch-from-source/index
Вариант 2. Настройка Crontab через командную строку
В качестве альтернативы, если у вас есть доступ к вашему серверу из командной строки и соответствующие права пользователя, вы можете настроить crontab через командную строку в соответствии с ответом Зденека. Также есть соответствующая информация здесь. Как правило, это предпочтительный метод, но, на мой взгляд, он немного сложнее и может вызвать трудности при настройке и отладке, особенно если вы не имеете опыта работы с Unix.
Вариант № 3. Служба задач Cron. Если вы ищете более простое решение, вы можете рассмотреть одну из служб cron, которая будет загружать определенный URL-адрес в заданное время.
Например, я использовал этот сервис в прошлом: https://www.setcronjob.com
После создания учетной записи вы просто вводите URL-адрес и выбираете время, когда вы хотите, чтобы URL-адрес вызывался. Вы можете легко выполнить свои требования по вызову indexAction в 12:00 и icalAction в 12:10, настроив два задания: одно для запуска в 12:00, а другое для запуска в 12:10. У SetCronjob есть бесплатный план, который может соответствовать вашим потребностям, но имейте в виду, что они требуют, чтобы вы вводили капчу каждые 30 дней, чтобы продлить свою бесплатную учетную запись (что хорошо, но через некоторое время становится раздражающим).
URL и командная строка
С помощью «wget» в варианте № 1 и службы Cron в варианте № 3 вам нужно будет сделать свои indexAction и icalAction доступными через http. Это может быть важным соображением. Даже если вы добавите некоторую проверку (проверив код, который вы отправляете через строку запроса или сообщение), все еще возможно, что любой в Интернете может активировать эти функции, если он знает правильный «секретный» URL-адрес. Доступ к вашим методам ical и index через http имеет дополнительное преимущество, заключающееся в том, что вы можете легко вызывать их, если хотите вручную запустить эти сценарии для принудительного обновления.
С подходом CLI, упомянутым Зденеком, вы создаете консольный маршрут в ZF2, и единственный способ запустить этот маршрут — через командную строку. Обычно это предпочтительнее, потому что ваши методы index и ical не будут доступны для http, но это не всегда вариант в зависимости от настроек вашего хостинга, и это может не вызывать серьезных проблем в зависимости от того, что эти функции делают с вашими данными и общедоступным веб-сайтом. .
person
BPosey
schedule
04.11.2013