gzhegow
@gzhegow
aka "ОбнимиБизнесмена"

Как узнать, на какой функции PHP уходит в «вечный запрос»?

Проверил, чтобы были закрыты все curl, чтобы везде стояли таймауты.
Но время от времени скрипт, задача которого много раз обратится в google docs, затем в файловую систему, затем опять в google_docs, потом опять в fs - уходит в ожидание до получения 504 от nginx.

Если прождать минуту и запустить - отработает.
Еще раз запустить - снова отработает.
Но время от времени совершенно случайно уйдет в ожидание.

Как понять, на чем скрипт остановился, чтобы проверить в чем дело?
Есть опасения на работу функций записи-считывания в операционке, потому что этот баг периодически вылазит когда работаешь с выгрузками, где тоже надо открыть файл, закрыть файл, считать, отправить...
  • Вопрос задан
  • 218 просмотров
Пригласить эксперта
Ответы на вопрос 1
Falseclock
@Falseclock
решаю нестандартные задачи
Просто вызывайте эксепшин или сделайте обработчик данного кода, предварительно выставив таймаут в секундах.

curl_setopt($ch, CURLOPT_TIMEOUT, 400); // время в секундах
// тут ваш код запрос страницы
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
					
if ($httpcode == 0) { throw new Exception("No connection"); }
if ($httpcode == 504) { throw new Exception("504 can't connect"); }


внутри throw new Exception можете выводить в ошибку урл который запрашивали, либо вообще через debug_backtrace выводить от куда ноги растут.

Если хотите без эксепшина, то просто пишите куда-то логи
Ответ написан
Ваш ответ на вопрос

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

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