@WDC_SPB

Почему PHP-скрипт зависает/завершается на паузе (sleep)?

Есть служебный скрипт для обработки данных, который автоматически запускается по событию как вебхук из Битрикс24 10-100 раз с разными параметрами и ПАУЗОЙ:
<?php
// подключение функций и файлов, получение данных из $_REQUEST
file_put_contents('log.log', 'старт паузы: ' . $_REQUEST['id'] . PHP_EOL, FILE_APPEND);
sleep(120);
file_put_contents('log.log', 'конец паузы: ' . $_REQUEST['id'] . PHP_EOL, FILE_APPEND);
// основной код-обработчик
?>


Почему-то в некоторых случаях (1 на ~1000) в файле log.log для отдельного события (например, https://.../index.php?id=1234) я вижу такую картину:

старт паузы: 1234

Т.е. скрипт стартовал, но после паузы не выполнился т.к. нет строки "конец паузы: 1234". Прервался ли он до паузы, во время или после нее - не понятно. Тайм-лимит на сервере 800 секунд.
Подскажите, пожалуйста, куда копать?
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Например, пользователю надоело ждать 2 минуты и он закрыл страницу. Браузер разорвал соединение и сервер сбросил скрипт. Пишите в свой лог время события и сравнивайте с логом сервера.
Ответ написан
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Под разными операционными системами есть разные способы:
register_shutdown_function("func_shutdown");
// or...
pcntl_signal(SIGINT, "func_shutdown");
pcntl_signal(SIGTERM, "func_shutdown");

Так сможете обработать завершение скрипта, и хотя-бы частично узнать причину.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы