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