В интернете описывают много способов запуска php скриптов по расписанию, с помощью cron. Перепробовал пару десятков методов, описывающие вызов скриптов и через wget, fetch, указанием обработчика в задании сron, различных путей, относительных и прямых, но скрипт почему то не запускался. Нашел метод, который подошел к моей системе:
- FreeBSD 8.1-RELEASE
- PHP Version 5.3.4
Во-первых, в исполняемый скрипт добавил строку, указывающую обработчик:
1 |
#!/usr/local/bin/php |
А дальше — выставил скрипту права на исполнение:
1 |
chmod 777 upd-serv.php |
где upd-serv.php — имя моего скрипта.
Далее пошел редактировать задания крона, файл необходимый нам называется crontab, находится в папке /etc.
Добавил следующее задание:
1 |
*/1 * * * * root /mnt/WWW/cs.24srv.ru/data/upd-serv.php >> /mnt/WWW/cs.24srv.ru/upd-serv.txt |
>> /mnt/WWW/cs.24srv.ru/upd-serv.txt — данная конструкция сделана для вывода в файл результатов выполнения скрипта, в моем случае после удачного выполнения скрипт ничего в файл не пишет.
*/1 * * * * — данная конструкция означает, что скрипт выполняется на сервере с интервалом 1 раз в минуту. Кто то скажет, что сильно часто — ну мне необходимо производить мониторинг серверов в режиме практически реального времени.
root — имя пользователя — под которым выполнять скрипт, хватило бы доже пользователя, которому пренадлежал файл.
/mnt/WWW/cs.24srv.ru/data/upd-serv.php — собственно прямой путь к скрипту, который должен выполняться.
Второй проверенный сопсоб:
Система:
- FreeBSD 9.1-STABLE
- PHP Version 5.4.10
PHP файл оставляем в покое, идем разу редактировать задания cron’a:
1 |
5 1 * * * root /usr/local/bin/php -f /mnt/www/24srv.ru/data/crontab.php sitemap |
В данном случае мы указываем полный путь к обработчику php с ключом -f, после указываем путь к файлу и параметр запуска файла (входящая переменная). Все.