Как PHP управляет статическими и глобальными переменными?

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

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

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

что вы имеете в виду под "сбросом"? вы имеете в виду, что глобальных переменных больше нет с вашими изменениями после того, как скрипт выведет интерпретируемый код? Не уверен, что понял ваш вопрос. Не могли бы вы привести пример?

Eden Reich 30.05.2018 20:46

@EdenReich Я имею в виду, что переменные сбрасываются, т.е. они становятся null, даже если это невозможно, если им присвоено значение строки JSON.

maxcountryman 30.05.2018 22:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
54
1

Ответы 1

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

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

Надеюсь это ответит на твой вопрос

Хорошо, я думаю, что это имеет некоторый смысл: если веб-сервер запускает процессы за кулисами (предположительно, будет пул процессов, а не процесс на запрос, но тогда возможно, что этот пул добавляет и удаляет процессы поверх time), то в конечном итоге значение будет сброшено.

maxcountryman 30.05.2018 22:07

Другие вопросы по теме