Начало работы с заданиями cron и PHP (Zend Framework)
Я совершенно новичок в теме заданий cron, поэтому я понятия не имею, с чего начать изучать их; когда, почему или как использовать их в моем приложении Zend Framework или PHP в целом.
Может ли кто-нибудь объяснить процесс на примере или порекомендовать какие-нибудь хорошие ресурсы для начала работы?
5 answers
Задания Cron - это механизм автоматизации задач в операционной системе 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-скрипте, включая сценарии командной строки. Однако вам нужно убедиться, что PHP может найти соответствующие классы Zend Framework, поэтому вам нужно добавить путь к библиотеке Zend Framework в свой include_path
. Затем вы можете настроить автоматическую загрузку с помощью Zend_Loader_Autoloader
(ZF>=1.8) или Zend_Loader
(ZF
Как и любой другой скрипт или программа, этот PHP-скрипт можно естественным образом использовать в задании cron. Еще одна вещь, которую следует отметить, это то, что вам нужно убедиться, что пользователь, выполняющий ваши задания cron, имеет доступ для чтения к пути библиотеки Zend Framework, иначе PHP не сможет прочитать файлы Zend Framework.
Если ваш вопрос был нацелен на использование компонента MVC в сценариях CLI, я должен признать, что у меня нет никакого опыта в этом. Я бы предположил, что немалое усилие необходимо реализовать соответствующие классы запросов, ответов, распределителей и маршрутов.
РЕДАКТИРОВАТЬ:
Пожалуйста, смотрите эту статью для получения дополнительной информации.
Возможно, поможет пример из реальной жизни. Несколько лет назад я работал над проектом календаря событий с использованием платформы Zend. В этом календаре пользователь может создать событие и прикрепить к нему 1 или более дат. Естественно, я реализовал это как объединение "многие к одному" в своей базе данных, но это означало, что для прикрепления даты событие должно было существовать в первую очередь. Однако я хотел разрешить пользователям добавлять даты во время , когда они создавали событие, а не после , когда они создали событие. Другими словами, я хотел, чтобы пользователь редактировал все аспекты события одновременно и отправлял только тогда, когда нажимал "сохранить".
Я решил проблему, вставив новую пустую запись о событии в базу данных, когда пользователь начинает создавать запись о событии. Эта пустая запись заполняется и сохраняется, когда пользователь нажимает "сохранить", или удаляется, когда пользователь нажимает "отменить". Проблема возникла, когда пользователи ушли, не нажав "отмена", и осталась пустая запись о событии в базе данных. В конце концов, база данных заполнится этими бессмысленными пустыми событиями, и все может стать ужасно.
Я написал функцию под названием "обслуживание()", которая, помимо прочего, удаляла все несохраненные записи старше 24 часов. Я настроил задание cron, которое выполнялось каждую ночь, и выполнил php-скрипт командной строки, который запускал maintenance().
Другие вещи, для которых вы могли бы использовать задание cron:
- Отправьте пакет электронных писем новым пользователям. (каждые 5 минут?)
- Обновлять статистику пользователей (каждый час?)
- Выполняйте ресурсоемкие операции, когда серверы не перегружены трафиком (каждую ночь в полночь или раз в неделю в воскресенье вечером?)
- Любое другое событие, которое не происходит в ответ на запрос пользователя (то, что Джефф называет "внеполосным").
Вас также может заинтересовать как хранить задания cron с помощью ZF
Вот ссылка на хороший способ внедрения системы cron с помощью Zend Framework:
Задачи Cron в приложениях Zend Framework
Лично я адаптировал его так, чтобы параметр мог быть динамическим, но база та же:-)