Вопрос

Я совершенно новичок в теме cron jobs, поэтому понятия не имею, с чего начать изучать их;когда, почему или как использовать их с моим приложением Zend Framework или PHP в целом.

Кто-нибудь может объяснить процесс на примере или порекомендовать какие-нибудь хорошие ресурсы для начала?

Это было полезно?

Решение

Cron jobs - это механизм автоматизации задач в операционной системе Linux.И имеет довольно мало общего с Zend Framework.Однако фреймворк может помочь вам разработать продвинутую задачу cron на php.Но тогда вам придется настроить свое задание cron в командной оболочке.

Поиск в Google "как настроить задание cron" показал эту ссылку вверху:

http://www.adminschoice.com/docs/crontab.htm

Я уверен, что эта статья поможет вам.

P.S.

В качестве команды для выполнения вы должны ввести что-то вроде:

/usr/local/bin/php -f <path_to_your_php_script>

где первый путь - это полный путь к вашему исполняемому файлу php cli, который может отличаться на вашем компьютере.Вы можете убедиться в этом, выполнив эту команду:

which php

Удачи с заданиями cron ;)

Другие советы

Поскольку Zend Framework представляет собой набор так или иначе слабо связанных компонентов, вы можете использовать понравившиеся вам компоненты в каждом PHP-скрипте, включая CLI-скрипты.Однако вам нужно будет убедиться, что PHP может найти соответствующие классы Zend Framework, поэтому вам нужно добавить путь к библиотеке Zend Framework в свой include_path.Затем вы можете настроить автозагрузку с помощью Zend_Loader_Autoloader (ZF >= 1,8) или Zend_Loader (ZF < 1.8) чтобы облегчить жизнь.Теперь у вас должен быть доступ ко всем компонентам Zend Framework, которые вы можете использовать по своему усмотрению.

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

Если ваш вопрос был направлен на использование компонента MVC в скриптах CLI, я должен признать, что у меня нет никакого опыта в этом.Я бы предположил, что необходимо приложить немалые усилия для реализации соответствующих классов request, response, distpachter и route.

Редактировать:

Пожалуйста, посмотрите эта статья для получения дополнительной информации.

Может быть, вам поможет пример из реальной жизни.Несколько лет назад я работал над проектом календаря событий, используя Zend Framework.В этом календаре пользователь может создать событие и привязать к нему 1 или более дат.Естественно, я реализовал это как объединение "многие к одному" в своей базе данных, но это означало, что для того, чтобы прикрепить дату, событие должно было сначала существовать.Однако я хотел разрешить пользователям добавлять даты в то время как они создавали событие, а не после они создали событие.Другими словами, я хотел, чтобы пользователь редактировал все аспекты события одновременно и отправлял только тогда, когда нажимал "сохранить".

Я решил проблему, вставив новую пустую запись о событии в базу данных, когда пользователь начинает создавать запись о событии.Эта пустая запись заполняется и сохраняется, когда пользователь нажимает "сохранить", или удаляется, когда пользователь нажимает "Отмена".Проблема возникла, когда пользователи ушли, не нажав "Отмена", и в базе данных осталась пустая запись о событии.В конце концов, база данных заполнилась бы этими бессмысленными пустыми событиями, и все могло бы стать некрасиво.

Я написал функцию под названием "maintenance()", которая, помимо прочего, удаляла все несохраненные записи старше 24 часов.Я настроил задание cron, которое выполнялось каждую ночь, и выполнил php-скрипт командной строки, который запускал maintenance().

Другие вещи, для которых вы могли бы использовать задание cron:

  • Отправьте пакет электронных писем новым пользователям.(каждые 5 минут?)
  • Обновлять статистику пользователей (каждый час?)
  • Выполнять ресурсоемкие операции, когда серверы не перегружены трафиком (каждый вечер в полночь или раз в неделю в воскресенье вечером?)
  • Любое другое событие, которое не происходит в ответ на запрос пользователя (то, что Джефф называет "внеполосным").

вас также могут заинтересовать как хранить задания cron с помощью ZF

Вот ссылка на хороший способ внедрения системы cron с помощью Zend Framework:

Задачи Cron в приложениях Zend Framework

Personnaly, я адаптировал его так, чтобы параметр мог быть динамическим, но основа та же: -)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top