Рассматривали ли вы просто, чтобы ваш скрипт запускал бесконечный цикл с sleep
для ожидания 5 минут между итерациями?
for (;;)
{
perform_actions();
sleep(300);
}
В качестве альтернативы, вы можете иметь файл (например, is_running), иполучите эксклюзивный замок на него в начале вашего скрипта, который будет выпущен в конце.По крайней мере, таким образом вы не будете делать ничего разрушительного.
Вы также можете объединить эти два решения.
$fp = fopen("is_running", "r+");
/* is it already running? */
if (! flock($fp, LOCK_EX | LOCK_NB)) return;
for (;;)
{
perform_actions();
sleep(300);
}
И затем запускать задачу cron каждые 15 минут.Если процесс все еще выполняется, он просто выйдет из строя, в противном случае он будет перезапускаться и возобновлять обновление каждые 5 минут.