Выполнение php скриптов в cron

Выполнение php скриптов в cron

В интернете описывают много способов запуска php скриптов по расписанию, с помощью cron. Перепробовал пару десятков методов, описывающие вызов скриптов и через wget, fetch, указанием обработчика в задании сron, различных путей, относительных и прямых, но скрипт почему то не запускался.

Нашел метод, который подошел к моей системе:

  • FreeBSD 8.1-RELEASE
  • PHP Version 5.3.4

Во-первых, в исполняемый скрипт добавил строку, указывающую обработчик:

#!/usr/local/bin/php

А дальше — выставил скрипту права на исполнение:

chmod 777 upd-serv.php

, где upd-serv.php — имя моего скрипта.

Далее пошел редактировать  задания крона, файл необходимый нам называется crontab, находится в папке /etc.

Добавил следующее задание:

*/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:

5     1       *       *       *       root    /usr/local/bin/php -f /mnt/www/24srv.ru/data/crontab.php sitemap

В данном случае мы указываем полный путь к обработчику php с ключом -f, после указываем путь к файлу и параметр запуска файла (входящая переменная). Все.