Бывало ли у вас, что скрипт на php подвисает на несколько минут просто так?
Пока логов не будет - это все гадание на кофейной гуще. Обложите путь выполнения скрипта трэйсами, посмотрите в чем дело - быть может поймали лок в бд или внешний сервис долго отвечает на запрос. Плюс выглядит так, что while(true) можно поменять на запуск по крону - говорят php рожден, чтобы умирать
Решение: переделал скрипт на крон вариант, бесконечный цикл убрал.
Добавил проверку через flock$lock = fopen("/tmp/lock.txt", "a+");
if (!$lock || !flock($lock, LOCK_EX | LOCK_NB)) {
    exit("LOCK_DETECT. EXIT \n");
}