Загрузка приложения / фреймворка PHP в память только один раз возможно с FastCGI? - PullRequest
4 голосов
/ 01 июня 2009

У меня сложилось впечатление, что FastCGI позволяет вам один раз загрузить свое веб-приложение, а затем вы просто «предоставляете» FastCGI некоторую функцию, например myHandleHTTPRequest($url), которая затем будет вызываться всякий раз, когда приходит запрос. Таким образом, вы получите гораздо лучшую производительность, так как ваше приложение постоянно находится в памяти, верно?

Но я начинаю понимать, что это не так. Или я ошибаюсь?

Мне кажется, что PHP загружается FastCGI, хорошо, и это дает некоторое улучшение, но затем мое приложение по-прежнему перезагружается при каждом запросе.

Я хотел бы загрузить свое приложение (или прочитать 'framework') один раз (а затем перезагрузить, скажем, каждые 500 запросов или около того). Могу ли я это сделать?

Редактировать : Этот вопрос перефразирован в этот вопрос: Пользовательский интерфейс PHP FastCGI

Ответы [ 2 ]

3 голосов
/ 01 июня 2009

Что делает fastcgi, так это избегает вызова php-интерпретатора для каждого запроса (как это делает cgi). Это экономит огромное количество времени на обработку, так как интерпретатор php хранится в памяти, более или менее, как это делает mod_php.

Что вы можете сделать для улучшения производительности:

  1. Используйте APC или xcache и т. Д., Которые прозрачно прекомпилируют каждый php-файл, избегая повторной компиляции при каждом запросе.
  2. Кэширование. Apc и другие предоставляют механизмы для хранения переменных со временем жизни, которое охватывает даже запросы. Это можно использовать для обмена обработанными данными между запросами и сохранения данных приложения в памяти.
2 голосов
/ 01 июня 2009

Да, вы можете сделать это, более или менее забыв обо всех модных вещах PHP * * * * * * * * * *. приложение как сервер FastCGI само по себе.

Это целая другая тема, но вы, возможно, захотите посмотреть , как это делают Perl-приложения для руководства.

...