Добавление / удаление задания cron с использованием PHP - PullRequest
3 голосов
/ 28 августа 2009

Вот моя ситуация: у нас есть сторонний поставщик, который будет отправлять XML-файлы на наш сервер каждые 30 секунд в указанное время недели. Это время будет меняться каждую неделю. Итак, я хотел бы предоставить своим пользователям интерфейс на стороне управления нашего сайта, где они могли бы «нажать кнопку» и инициировать сбор данных. (и таким же образом сможете выключить работу)

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

Мой вопрос: это лучший способ сделать это? Есть ли опасность в планировании и удалении заданий cron из php? Какие вещи мне нужно иметь в виду, когда я создаю это?

Кроме того, любые указания / подсказки о том, как этого добиться, более чем приветствуются. Заранее спасибо.

Ответы [ 4 ]

4 голосов
/ 28 августа 2009

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

2 голосов
/ 28 августа 2009

Я бы посоветовал вам не добавлять и не удалять задания cron с помощью PHP. Вместо этого вы должны написать (фиксированное) задание cron, которое будет настроено с использованием PHP. Он может проверять какой-либо конфигурационный файл или базу данных каждый раз, когда запускается для фактических заданий, которые вы поставили в очередь.

1 голос
/ 28 августа 2009

Я делал подобные вещи раньше. Я не рекомендую включать / выключать cron на уровне crontab.

Вместо этого оставляйте cron включенным все время, но скрипт PHP должен выглядеть так:

if( ScriptIsEnabled() )
{
  DoWork()
}

ScriptIsEnabled() должен искать флаг в файле конфигурации, базе данных, кэше памяти или как-либо еще, когда вы хотите общаться со скриптом Я предпочитаю memcache (минимум накладных расходов - просто установите значение) над базой данных.

Для этого вы можете использовать веб-интерфейс с кнопкой включения / выключения.

1 голос
/ 28 августа 2009

Вы можете прочитать в файле crontab и добавить / раскомментировать или закомментировать строку, которая запускает ваш скрипт. Это заставило бы меня нервничать, потому что из-за ошибки ваш crontab мог сломаться, что повлияло бы на другие рабочие места.

Вы также можете просто оставить работу cron. Сделайте так, чтобы ваш переключатель вкл / выкл установил значение в каком-то другом файле или базе данных, а затем cronned скрипт проверил это значение, чтобы определить, должен ли он что-то делать на самом деле или просто выйти.

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

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

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