Начало работы с заданиями cron и PHP (Zend Framework) - PullRequest
2 голосов
/ 04 мая 2009

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

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

Ответы [ 5 ]

3 голосов
/ 04 мая 2009

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

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

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

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

приписка

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

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

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

which php

Удачи в работе cron;)

2 голосов
/ 04 мая 2009

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

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

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

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

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

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

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

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

EDIT:

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

1 голос
/ 03 августа 2011

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

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

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

1 голос
/ 04 мая 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...