Как PHP управляет статическими и глобальными переменными? - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь понять, почему глобальное значение, которое должно кэшироваться в памяти на время жизни процесса, иногда сбрасывается.

В частности, это результат вызова метода, который извлекает и возвращаетмаленький объект JSON - я пытаюсь запомнить этот вызов, сохраняя это значение в глобальном, и это, кажется, работает большую часть времени.Однако, как я уже упоминал, время от времени он явно сбрасывается.

Сбрасывает ли PHP когда-нибудь статические или глобальные переменные? В этом посте упоминается что-то о цикле выполнения и сбросе статики как побочный эффект.Это точно?

1 Ответ

0 голосов
/ 30 мая 2018

Мне кажется, я понял ваш вопрос.Поэтому я попытаюсь ответить на него:

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

Надеюсь, что ответ на ваш вопрос

...