Начало работы с заданиями cron и PHP (Zend Framework)
-
03-07-2019 - |
Вопрос
Я совершенно новичок в теме 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, я адаптировал его так, чтобы параметр мог быть динамическим, но основа та же: -)