Предполагая, что вы действительно не можете использовать хрон или планировать выполнение заданий вам нужно будет написать цикл сна. Информация о том, как вы его пишете, будет зависеть от ваших требований.
Если вы хотите только один раз в день, вам придется беспокоиться о коротких сна. Системный вызов сна, находящийся под большинством функций сна, не гарантирует, что он будет спать запрошенный промежуток времени. Ваша программа может спать немного дольше, чем требуется, или намного меньше запрошенной. Вы можете запланировать спящий режим в течение 24 часов, но ОС может разбудить вашу программу, чтобы доставить сигнал через несколько часов или даже через несколько секунд. Если вы не отслеживаете последний прогон или ваш следующий ожидаемый прогон, вы можете выполнять несколько раз в день.
Если вы хотите выполнить в определенное время, вам потребуется изменить продолжительность сна. Частичный сон может отключить вас на полдня, и вам нужно будет спать 12 часов, чтобы вернуться в синхронизацию.
Вам необходимо учитывать Летнее время/Летнее время. Один день в году будет 23 часов, а другой будет 25.
Вы можете использовать что-то вдоль линий этого псевдокода:
set next_time_to_run
loop forever
sleep time_difference_in_seconds(current_time, next_time_to_run)
if current_time is close to next_time_to_run
execute code
update next_time_to_run
end if
end loop
cron - хорошее решение. Можете ли вы рассказать нам, почему вы не можете его использовать? – haydenmuhl
Не могли бы вы уточнить свои ограничения? Работа «на» не приемлема? Должно ли перезагрузка автоматически после перезагрузки сервера? – extraneon
У меня нет разрешений на использование cron-таблиц. Предположим, что сервер НЕ перезагрузится. – vehomzzz