Я собираюсь вызвать вызов файла PHP через завиток в расписании. Я думаю, что сценарий должен исполняться каждые 23:59:59 или просто за минуту до того, как день превратится завтра. Какой лучший подход для этого? Достаточно запутался в настройках cron.
Мне нужно, чтобы я бежал ровно за секунду до следующего дня.
Для выполнения сценария каждый день в 23:59:00 используйте следующее:
59 23 * * * root /path_to_file_from_root
Секунды не могут быть определены с помощью Cron , но это должно сделать для вас.
Чтобы выполнить скрипт в 23:59:59, используйте функцию PHP sleep()
чтобы отсрочить выполнение скрипта на 59 секунд. Я бы посоветовал 58 секунд, хотя, чтобы убедиться, что сценарий не задерживается до полуночи.
Это очень просто, вы можете сделать его немного более сложным и запустить тесты, чтобы гарантировать, что сценарий всегда запускается в 23:59:59, получая время и задерживая соответствующим образом. Однако это не обязательно.
<?php // Any work that the script can do without altering the database, do here // Delay the script by 58 seconds sleep(58); // Carry on with the rest of the script here, database updates etc ?>
Minutes [0-59] | Hours [0-23] | | Days [1-31] | | | Months [1-12] | | | | Days of the Week [Numeric, 0-6] | | | | | * * * * * home/path/to/command/the_command.sh 59 23 * * * home/path/to/command/the_command.sh
Начать редактирование crontab
crontab -e
или
vi /etc/cronatb
Это зависит от дистрибутива.
59 23 * * * root /path/to/your/php/file.php
Обратите внимание, что в «корневом» столбце указано имя пользователя, под которым запускается работа, возможно, не будет доступна в вашей системе.
Попробуйте запустить
man crontab
Больше подробностей
Вы можете настроить его для работы ровно 23:59:00 каждый день, взгляните на приведенные здесь примеры. В частности, посмотрите пример №. 1, в котором точно объясняется, как установить cronjob для определенного времени суток.