|
hiramon
Начнем издалека. Как можно выдавать динамический контент:
1) использовать API http-сервера. То есть http-запрос отдается обработчику, работющему в контексте процесса http-сервера, а тот возвращает http-response.
+ быстрее не бывает
- жесткая привязка к конкретному серверу
- бинарник и ничего больше
- скорее всего, жесткая привязка к операционной системе
- ошибка, скорее всего, приведет к падению http-сервера.
- сложно.
2) использовать внешний сервер, например, fastcgi-сервер. Сервер, используя сокеты или пайпы, отдает http-request заранее запущенному внешнему серверу, тот обрабатывает его и тем же путем возвращает http-response. Сервер может быть как однотредным, так и многотредным.
+ быстро (для апача и IIS есть соответствующие модули)
- ошибка приводит к падению и, если все настроено нормально, рестарту fastcgi-сервера. А это - снова подъем статичной информации в память.
3) классика CGI: запуск процесса и пайпы - для передачи запроса, получения ответа, и для получения ошибок.
+ ошибка приводит к отказу только одного запроса. То есть надежность высокая.
+ широкий выбор средства реализации - хоть шелловские скрипты.
- очень медленно
4) интерпретатор как модуль http-сервера. Похоже на (1), но модуль выполняет единственное действие - интерпретирует переданный ему скрипт.
+ быстро
+ достаточно надежно
+ достаточно хорошая переносимость
- не все задачи хороши для интерпретатора
По скорости работы порядок будет таков: (1) - (2) - (4) - (3). (2) и (4) могут поменяться местами при длинном ответе, и под Win В качестве примера - (2) быстрее, чем (3) в среднем на порядок, и при повышении сложности приложения различие в скорости становится значительнее.
PHP существует в вариантах (3) и (4) (насколько я в курсе)
Perl - (2), (3) и (4).
Так что неважно, что у тебя на рабочей машине - главное, как будет настроен рабочий сервер Наверняка будет (4)
|