Запуск PHP скрипта CRON в OpenServer — PHP шаг за шагом

openserver-7344239Запуск 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);

# 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%\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

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

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

openserver-cron-8300693

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

openserver-cron-php-1300812

Вывод

Если вам нужно использовать в скрипте местное время, то обязательно явно укажите путь к файлу 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

%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’;

$path = __DIR__ . ‘/forcron.txt’;

$path = ‘/forcron.txt’;

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

Полезные ссылки: OpenServer

github-bb449e0ffbacbcb7f9c703db85b1cf0b-300x111-5666919