Бывало ли у вас, что скрипт на php подвисает на несколько минут просто так?

Здравствуйте.
PHP 7.2.15 (cli)
Имеется php скрипт, который работает в бесконечном цикле. Выполняется ряд действий, которые логируются, пауза минута и опять по новой. И иногда между двумя записями в логах может пройти не положенные 1-2 секунды, а несколько минут, а то и 10 минут.
Скрипт запускается на купленном VPS.
Для исключения причин в самом впс, параллельно запущен скрипт, который пишет в лог каждую секунду запись, в нём таких пробелов нету.
Мониторил процессы/ресурсы через atop, ничего подозрительного не показало.
Подскажите, на что может быть похоже? Искать причину в самом коде не где, т.к. такие пробелы каждый раз появляются в новом месте.
  • Вопрос задан
  • 663 просмотра
Решения вопроса 1
@vebmaster Автор вопроса
Решение: переделал скрипт на крон вариант, бесконечный цикл убрал.
Добавил проверку через flock
$lock = fopen("/tmp/lock.txt", "a+");
if (!$lock || !flock($lock, LOCK_EX | LOCK_NB)) {
    exit("LOCK_DETECT. EXIT \n");
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@heahoh
Full stackoverflow developer
Пока логов не будет - это все гадание на кофейной гуще. Обложите путь выполнения скрипта трэйсами, посмотрите в чем дело - быть может поймали лок в бд или внешний сервис долго отвечает на запрос. Плюс выглядит так, что while(true) можно поменять на запуск по крону - говорят php рожден, чтобы умирать
Ответ написан
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
Выполняется ряд действий

Ну так пока ряд действий не выполнится, не переходит к следующим. Видимо при определенных условиях (входных данных) ряд действий выполняется долго.

пауза минута

как она реализована? В скрипте? Тогда она срабатывает только когда выполнится скрипт (интеграция в Вашем цикле). Вы не параллельно логирование запускайте а внутри цикла, перед паузой. Логируйте ошибки и т.д.
Ответ написан
Ваш ответ на вопрос

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

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