PHP - sleep () не может продолжить выполнение после того, как прошло время - PullRequest
0 голосов
/ 28 ноября 2018

В настоящее время я реализую функцию sleep () в своем скрипте PHP, чтобы приостановить выполнение на 15 минут, чтобы дать некоторый буфер для завершения других задач, прежде чем продолжить выполнение скрипта.

<?php

------do something here-----

   file_put_contents("logs/pre_sleep.log", "$id sleep in $datetime", FILE_APPEND);

   sleep(900);    

----continue do something here----

   file_put_contents("logs/done.log", "$id done in $datetime", FILE_APPEND);

?>

Когда PHP вызывается из клиента, процесс регистрируется в "pre_sleep.log", а до завершения скрипта - в "done.log".Однако, основываясь на журнале, который я пишу, я замечаю, что некоторое выполнение не будет продолжаться, даже если прошло 15 минут.Процесс был зарегистрирован в "pre_sleep.log", где "done.log" не смог найти тот же процесс.

Возможно ли, что процесс был убит другими в течение 15 минут?Это случается очень случайно, потому что большинство процессов регистрируются в обоих файлах журнала, но некоторые появляются только в одном.

1 Ответ

0 голосов
/ 28 ноября 2018

Возможно, процесс будет остановлен после сна (или даже перед сном).

Я думаю, ваш тайм-аут PHP в игре.Поместите в верхнюю часть файла скрипта следующее:

set_time_limit(0);
// or
ini_set('max_execution_time', 0);

Это позволит скриптам запускать навсегда

...