Использование cron manager из PHP - PullRequest
4 голосов
/ 12 мая 2010

Я хочу добавить раздел в моем приложении php для добавления / удаления запланированных задач.

Что-то похожее на то, что они используют в vBulletin Forum .

У кого-нибудь есть идеи, что они используют? Они используют задания cron или делают что-то на заказ.

Может ли кто-нибудь подсказать мне, как я могу выполнить нечто подобное, в основном я просто хочу, чтобы мой скрипт добавил или удалил задания cron / запланированное задание.

Я не хочу использовать, например, интерфейс cPanel Cron, я хотел бы выполнить это из моего скрипта.

Любая помощь очень ценится.

Ответы [ 5 ]

12 голосов
/ 12 мая 2010

Если у вас не включена функция exec(), вам придется полагаться на ручную настройку хотя бы одного задания cron через некоторый интерфейс и затем управлять отдельными заданиями в вашем скрипте.

Что я делаю дляНапример:

  1. У меня есть скрипт heartbeat.php, который выполняется каждую минуту
  2. Этот скрипт проверяет таблицу MySQL crontab и проверяет, есть ли строка (задание) сtime_to_process <= NOW()
  3. Если он есть, он загружает класс, определенный для конкретной строки, из crontab table
  4. Класс реализует интерфейс с методом run(), и я вызываю только $cronJob->run()чтобы заставить его работать
  5. Затем класс обрабатывает свое перепланирование через таблицу crontab после завершения

Хорошим примером является сброс ежедневных просмотров некоторых элементов.Работа назначена на 1 мая 2010 года в 00:00.После запуска задания оно автоматически планирует его на следующий день.
Затем можно реализовать автоматический сброс неудачных заданий и многие другие функции из PHP.

4 голосов
/ 12 мая 2010

http://ryanfaerman.com/php-crontab-manager/

- это класс php, который позволяет вам получить доступ к crontab из PHP, используя класс.

3 голосов
/ 12 мая 2010

Я полагаю, что vBulletin "подделывает" рабочие места cron. Любой пользователь, который обращается к странице, выполняет код, который проверяет, нужно ли запускать какие-либо задачи.

Если, однако, ни один пользователь не заходит на сайт, ни одно из заданий cron не будет выполнено, метод полностью зависит от просмотров страниц.

Кроме того, чтобы предотвратить отложенную визуализацию страницы для пользователей, которые выполняют задания cron, они выполняются после отрисовки страницы.

Опять же, это именно то, что я думаю, что происходит , я сам не смотрел на код.

Надеюсь, это поможет.

2 голосов
/ 11 апреля 2012

Вот мое решение :-)

Пример из командной строки:

bin/cronman --enable /var/www/myproject/.cronfile --user www-data

Нажмите для более: php-crontab-manager

1 голос
/ 08 января 2012

Вот класс PHP crontab:

http://www.kavoir.com/2011/10/php-crontab-class-to-add-and-remove-cron-jobs.html

Используйте методы для добавления, редактирования или удаления заданий cron.

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