@lastutf445
Full-stack developer

Почему падает интерпретатор при сравнении массива?

Здравствуйте, я первый раз тут, поэтому прошу строго не судить за оформление.

Суть проблемы:

Имеется валидная строка JSON, хранящаяся в базе данных.

Та самая строка

{
"option": ["core", "presence_simulation"],
"widget": ["status", "weather"],
"sensor": [{"id": 1}, {"id": 2}, {"id": 3}, {"id": 4}],
"module": [{"id": 1}, {"id": 2}, {"id": 3}, {"id": 4}]
}


Данная строка достаётся из базы данных, декодируется (без ошибок).
Код в общем виде выглядит вот так.

$struct = json_decode($raw, true, 256, JSON_BIGINT_AS_STRING);
if(!$struct) return self::require_struct();


Если закомментировать строку со сравнением, то код выполняется без аномалий. Но если сравнивать её нестрого с false, строго с null или просто !$struct, то интерпретатор зависает. Причём он больше не выполняет совершенно ничего, не грузит процессор, не обрабатывает дальнейшие подключения, а просто копит их.

В итоге они обрываются по таймауту со стороны nginx. То есть после выполнения этой части кода необходимо перезапускать интерпретатор, иначе не лечится. С другими массивами PHP работает хорошо.

В Интернете ничего на эту тему не нашёл.
Куда копать - не знаю, помогите
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
@lastutf445 Автор вопроса
Full-stack developer
Я не знаю куда писать ответ, если нашёл его сам.
Удивительные вещи делают юзеры, господа.
Я для решения проблемы даже попытался перейти на новейшую версию PHP.

Но ответ был коротким и ясным, даже смешным.
В конце конструктора стоит функция sleep с аргументом из базы данных.
Один из пользователей, из-за которого всё это происходило, отправил в неё значение 3000.

Занавес...
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
proudmore
@proudmore
Как именно падает, покажите ошибку?
Ответ написан
@BorisKorobkov Куратор тега PHP
Web developer
Сделайте test-case, где зависает.
Ваш указанный код работает без ошибок: sandbox.onlinephpfunctions.com/code/b67b5c6232bca0...
Ответ написан
Maksclub
@Maksclub Куратор тега PHP
maksfedorov.ru
расскажите как вы используете этот класс далее?
может заменить self на static?
Ответ написан
Ваш ответ на вопрос

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

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