Intereting Posts
Ошибка Mysql # 1305 ФУНКЦИЯ db.sys_exec не существует Laravel 5 добавление HTML в электронную почту PHP – запрашивать одно значение для каждой итерации или извлекать все при запуске и извлекать из массива? В PHPStorm, как я могу сделать работу типа намека, когда у меня есть метод суперкласса, который возвращает другой тип из каждого подкласса Дешифрование данных с помощью инструмента командной строки openssl разделение строки в php как массив «Недовольные символы UTF-8, возможно, неправильно закодированные» в Laravel Опубликовать на странице через Facebook API отображение wordpress external ip, полученного от gae, в мой домен PHP: Как добавить новую строку вверху файла csv с помощью fputcsv? арабский шрифт отображается в обратном порядке в dompdf Несколько языков на одной странице HTML file_get_contents () не удалось открыть поток: Ошибка переменной PHP smarty Как я могу изменить NLS_DATE_FORMAT в PHP

Жизненный цикл запроса PHP

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

Из того, что объясняет статья, скрипт анализируется и выполняется каждый раз, когда на сервер делается запрос! Мне это кажется сумасшедшим!

Я пытаюсь изучить PHP, написав небольшую микроархитектуру, которая использует многие функции PHP 5.3 / 5.4. Таким образом, я должен был подумать о том, какие статические средства и как долго действует статическая переменная класса. Я надеялся, что мое приложение может иметь этап настройки, который смог кэшировать его результаты в класс со статическими свойствами. Однако, если весь сценарий анализируется и выполняется на каждом запросе, я не вижу, как я могу избежать выполнения шагов инициализации приложения для каждого сервера, на котором выполняется запрос!

Я просто очень надеюсь, что мне не хватает чего-то важного здесь … Любое понимание очень высоко ценится!

Из того, что объясняет статья, скрипт анализируется и выполняется каждый раз, когда на сервер делается запрос! Мне это кажется сумасшедшим!

Нет, эта статья точна. Существуют различные способы кэширования результатов анализа / компиляции, но сценарий выполняется в полном объеме каждый раз. Никаких экземпляров классов или статических переменных не сохраняется в запросах. По сути, каждый запрос получает новую, никогда не исполняемую копию вашего приложения.

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

Вы не можете и не должны. Вы должны инициализировать свое приложение в каком-то пустое состояние для каждого запроса. Вы можете сериализовать связку данных в $_SESSION которая сохраняется в запросах, но вы не должны, пока не найдете, что это действительно необходимо.

Я просто очень надеюсь, что мне не хватает чего-то важного здесь …

Кажется, вы ничего не беспокоитесь. Каждый сайт PHP в мире работает по-умолчанию по умолчанию, и огромное, огромное большинство никогда не беспокоится о проблемах с производительностью.

Нет, вы ничего не пропустили. Если вам нужно сохранить какое-либо состояние приложения, вы должны сделать это, используя DB, файлы, Memcache и т. Д.

Поскольку это может показаться сумасшедшим, если вы не привыкли к этому, иногда это полезно для масштабирования и других вещей – вы сохраняете свое состояние в некоторых других сервисах, поэтому вы можете легко запускать несколько экземпляров PHP-сервера.

Статическая переменная, как и любая другая переменная PHP, сохраняется только в течение срока действия скрипта и, как таковая, не «живет» нигде. Стойкость между выполнением сценариев обрабатывается с помощью обработчиков сеансов .