Как PHP как CGI обрабатывает память? - PullRequest
7 голосов
/ 29 августа 2011

При запуске PHP с Apache я знаю, что ядро ​​php и все библиотеки загружаются для каждого запроса.Однако с PHP CGI, FastCGI или с использованием PHP-FPM процесс php обычно сохраняется для 500-1000 запросов до его перезапуска.

В течение этого времени, как он обрабатывает загруженные классы или библиотеки PHP?

Допустим, у меня есть файл, который загружает огромную библиотеку, будет ли он загружать (затем выгружать) большую библиотеку при каждом запросе или сохранять ее загруженной для каждого нового запроса, который я передаю?

Под "загруженным" я подразумеваю, что классы включены (и проанализированы), но объекты не создаются.

Как APC играет в это?

1 Ответ

2 голосов
/ 30 августа 2011

Для FCGI (PHP-FPM также FCGI), только двоичный файл php и его двоичные библиотеки остаются в памяти.Пользовательский код PHP не работает.

В течение этого времени, как он обрабатывает загруженные классы или библиотеки PHP?

Запускает их, получает новые на новыхзапрос.Вы можете легко проверить это, установив глобальные переменные, они исчезнут в начале нового запроса.

Итак, ответ на ваш (жирный) вопрос Давайте прямо ответим: да,загружается и сбрасывается для каждого запроса, нет или! :)

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

...