Запуск PHP скрипта CRON в OpenServer

Запуск PHP скрипта CRON в OpenServer сделать достаточно просто, но есть пара нюансов, которые нужно учесть при составлении команды.

Задача. Запускать скрипт с локальной машины по определенному расписанию.

Если вы достаточно часто пробуете разные куски кода от сторонних разработчиков, да и собственные, то чаще всего используется программа OpenServer. В какой-то момент времени возникает необходимость в периодическом запуске какого-та myscript.php. Для этого есть встроенный планировщик cron, работает так же как на настоящем сервере — разница только в синтаксисе команды. Чтобы проверить был написан простейший код, который писал в текстовый файл дату-время и случайное число.

# code...
echo $r = date('Y-m-d H:i:s') . ': ' . rand(25,45) . "\n";
$path = __DIR__ . '/forcron.txt';
file_put_contents($path, $r, FILE_APPEND);

В планировщике была прописана команда, рекомендованная в руководстве с официального сайта:


%progdir%\modules\php\%phpdriver%\php-win.exe -c %progdir%\userdata\temp\config\php.ini -q -f %sitedir%\sitename.com\cron.php

с поправкой на имя сайта и имя скрипта получилось:


%progdir%\modules\php\%phpdriver%\php-win.exe -c %progdir%\userdata\temp\config\php.ini -q -f %sitedir%\avada.wp\myscript.php

Теперь нужно прописать эту команду в планировщик.

На скриншоте прописано две команды первая из руководства по настройке OpenServer и вторая с подправленным путем к php.ini. Обе команды исполняются, однако текущее время в записываемый файл попадает разное:

Вывод.

Если вам нужно использовать в скрипте местное время, то обязательно явно укажите путь к файлу php.ini


%progdir%\modules\php\%phpdriver%\php-win.exe -c %progdir%\modules\php\PHP-5.6\php.ini -q -f %sitedir%\avada.wp\myscript.php

В моем случае это modules\php\PHP-5.6\php.ini — в вашем случае скорее всего будут отличия в зависимости от версии PHP, которую вы используете

Дополнение:

...
$path = __DIR__ . '/forcron.txt';
$path = '/forcron.txt';

Если не использовать константу __DIR__ — скрипт будет работать при ручном запуске, при автоматическом — переместит выходной файл forcron.txt в свою папку: cron.

Рейтинг
( Пока оценок нет )
Загрузка ...