В прошлом я использовал mvc-приложения rails, merb, django и asp.net. Что у них общего (что имеет отношение к вопросу), так это то, что у них есть код, который устанавливает структуру. Обычно это означает создание объектов и состояния, которые сохраняются до перезагрузки веб-сервера (например, настройка маршрутизации или проверка доступных контроллеров и т. Д.).
Насколько я знаю, PHP больше похож на CGI-скрипт, который компилируется в какой-то байт-код при каждом запуске и после запроса сбрасывается. Конечно, у вас могут быть сеансы для сохранения данных между запросами от одного и того же пользователя, и, как я вижу, существуют такие расширения, как APC, с помощью которых вы можете сохранять объекты между запросами на уровне сервера.
Мой вопрос: как создать приложение PHP, которое работает как rails и тому подобное? Я имею в виду приложение, которое при первых запросах устанавливает фреймворк, затем при втором и последующих запросах используют уже настроенные объекты. Есть ли встроенная функция кеширования в mod_php? (например, в котором хранится скомпилированный байт-код выполненных приложений php) Или использование APC или некоторых подобных расширений является единственным способом решения этой проблемы? Как бы вы это сделали?
Спасибо.
РЕДАКТИРОВАТЬ: Альтернативный вопрос: если я создаю большое PHP-приложение, которое имеет очень большое время настройки, но незначительное время выполнения (как в вышеупомянутых инфраструктурах), то как мне «кэшировать» уже настроенные вещи (это может означать много вещей, за исключением, может быть, соединений с базой данных, потому что для этого у вас уже есть постоянные соединения в PHP).
Чтобы оправдать большое время установки: что, если я использую отражение PHP, чтобы проверить, какие объекты доступны, и установить время выполнения в соответствии с этим. Делать много размышлений обычно медленно, но нужно делать это только один раз (и переоценивать только в случае изменения исходного кода).
EDIT2: Кажется, это APC тогда. О том, что он автоматически кэширует байт-код, полезно знать.