Есть ли способ, которым PHP или сценарий оболочки могут настроить задание cron на веб-сервере?

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

При установке компонента, как я могу автоматически настроить задание cron для пользователя? Это возможно?

Я видел, как это реализовано в компоненте Akeeba backup pro для Joomla, поэтому я надеялся, что смогу сделать то же самое.

Спасибо


person Martin    schedule 21.06.2010    source источник


Ответы (3)


Теоретически вы можете создать файл crontab и вызвать его из PHP.

<?php
exec("crontab $path_to_cron_file");

на практике это зависит от того, позволяет ли это сервер (если вы находитесь на виртуальном хостинге).

person Matteo Riva    schedule 21.06.2010
comment
Спасибо, это то, что я был после. Я также нашел ответ здесь: stackoverflow.com/questions/2037176/ - person Martin; 22.06.2010

Все, что вам нужно сделать, это написать строку в файл crontab, обычно хранящийся в /var/spool/cron/crontabs/username. Демон cron увидит, что время модификации файла изменилось, и автоматически перезагрузит его, когда проснется для проверки.

person Michael Mrozek    schedule 21.06.2010

Другой вариант (менее желательный с точки зрения нагрузки на сервер, но более удобный для пользователей) — создать плагин, который запускается каждый раз, когда посетитель посещает сайт. Он может проверить, был ли процесс запущен в указанное время, а затем запустить его, если это необходимо.

У iJoobi.com есть еще одно решение, в котором они настроили сервер для запуска задач cron, которые затем будут пинговать определенный URL-адрес на веб-сайте, чтобы запустить процесс. (http://www.ijoobi.com/Help/jNews/jNews-Cron-Task.html)

person Don Cranford    schedule 24.06.2010
comment
Спасибо, Дон, ваш первый вариант не подходит для сайтов с высоким трафиком. Хорошая ссылка для cron, действительно здорово! - person Martin; 24.06.2010