Начало работы с заданиями cron и PHP (Zend Framework)

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

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

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

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

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

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

PS

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

/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, я должен признать, что у меня нет опыта в этом. Я бы предположил, что необходимо предпринять незначительные усилия для реализации соответствующих классов запроса, ответа, распределения и маршрута.

РЕДАКТИРОВАТЬ:

Дополнительную информацию см. В этой статье .

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

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

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

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

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

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

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

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

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