Я пытаюсь понять, почему иногда сбрасывается глобальное значение, которое должно кэшироваться в памяти на время существования процесса.
В частности, это результат вызова метода, который извлекает и возвращает небольшой объект JSON - я пытаюсь запомнить этот вызов, сохранив это значение в глобальном, и это, кажется, работает большую часть времени. Однако, как я уже упоминал, время от времени он явно сбрасывается.
Сбрасывает ли PHP когда-либо статические или глобальные переменные? Эта запись в блоге упоминает что-то о цикле выполнения и сбросе статики в качестве побочного эффекта. Это точно?
@EdenReich Я имею в виду, что переменные сбрасываются, т.е. они становятся null, даже если это невозможно, если им присвоено значение строки JSON.






Думаю, я понял ваш вопрос. Поэтому я постараюсь ответить на него:
Ключевое слово, которое следует понять из предоставленной вами статьи, заключается в том, что переменные, которые вы объявляете как статические (глобальные переменные), действительны только для «текущего цикла выполнения». Означает, что если другой процесс выполняет этот сценарий, в сценариях не будет таких же объявленных статических глобальных переменных, они будут полностью «сброшены». Обычно, когда запрос поступает на веб-сервер, веб-сервер обслуживает ваши файлы PHP в отдельном процессе. Насколько я понимаю, PHP «сбрасывает» глобальные статические переменные только после того, как скрипт полностью выполнен, а НЕ иногда во время выполнения.
Надеюсь это ответит на твой вопрос
Хорошо, я думаю, что это имеет некоторый смысл: если веб-сервер запускает процессы за кулисами (предположительно, будет пул процессов, а не процесс на запрос, но тогда возможно, что этот пул добавляет и удаляет процессы поверх time), то в конечном итоге значение будет сброшено.
что вы имеете в виду под "сбросом"? вы имеете в виду, что глобальных переменных больше нет с вашими изменениями после того, как скрипт выведет интерпретируемый код? Не уверен, что понял ваш вопрос. Не могли бы вы привести пример?