Запуск CRON, Передача параметров в php-скрипт, запускаемый через Cron
Первым параметром при настройке планировщика задач устанавливаются минуты, затем часы, дни и месяцы и, наконец, дни недели, в которые следует запускать скрипт...
Недавно столкнулся с необходимостью передачи параметров в php-скрипт, запускаемый через Cron, и нашел два пути решения этого вопроса:
- через командную строку для php;
- через get-запрос для wget.
Рассмотрим эти варианты более подробно …
Передать параметры через командную строку
/usr/bin/php /path/to/you_file.php param1 "p a r a m 2"
и тогда сами параметры будут доступны внутри скрипта через переменные:
$argc – количество параметров
$argv – массив параметров
Передать параметры через через get-запрос
/usr/bin/wget http://www.yoursite.com/your_file.php?par1=val1
и тогда сами параметры будут доступны внутри скрипта через стандартную серверную переменную $_GET
Для запуска PHP-скриптов методом GET с помощью планировщика задач используют утилиту wget.
Команда для запуска скрипта выглядит следующим образом:
/usr/local/bin/wget -O /dev/null "http://имя_домена/script.php?var1=xxx&var2=yy"
Здесь:
/usr/local/bin/wget – путь до утилиты wget;
http://имя_домена/script.php?var1=xxx&var2=yyy – адрес скрипта с параметрами.
Как воспользоваться "планировщиком задач" cron (панель cPanel)?
После настроек даты и времени указывается команда, которую следует выполнить. В начале этой строки необходимо указать полный путь к обработчику, а затем – полный путь к скрипту.
/home/login/public_html/ – стандартный путь к директории для файлов сайта.
Пример настройки планировщика задач
Исполнение скрипта каждую пятницу в полночь:
0 0 * * 5 /usr/bin/php-cgi /home/login/public_html/script.php
Здесь login – логин от cPanel.
Подробнее: http://help.hc.ru/entry/3046/
/usr/bin/php-cgi – PHP 5.2
/opt/php53/bin/php-cgi – PHP 5.3
/usr/bin/perl – Perl
/usr/bin/wget – утилита Wget.
Можно сделать так, чтобы планировщик отправлял электронные сообщения на требуемый адрес почты каждый раз при выполнении команды. Для этого в разделе «Электронное сообщение планировщика» → поле «Электронная почта» следует ввести действующий адрес электронной почты и нажать на кнопку «Электронное сообщение с обновлением».
Если отправка таких сообщений для отдельных заданий планировщика не требуется, Вы можете перенаправить выходные данные команды на /dev/null следующим образом:
mycommand >/dev/null 2>&1