Запуск 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.