On Tue, 25 Apr 2006, Sergey Serov wrote:
Кстати, а можно узнать, почему выбор встроенного языка был остановлен
именно
на перле? С одной стороны я вижу у Вас в коде сравнивание длины строки до
strncmp, а с другой стороны - перл. Этот пожиратель памяти.
Пока боролся с lighttpd обнаружил в нем полноценный встроенный Lua,
хоть и
назывался он там mod_cml (cache makeup language), но был совершенно
полноценным встроенным языком. Синтаксис, конечно непривычный немного,
но его
работа совершенно не сказывалась на результатах моих бенчмарков.
Статика и результат работы Lua выдавали одинаковое - порядка 5к
запросов в сек
на относительно слабой машине.
Изначально я не хотел встраивать какой-либо язык, поскольку неблокирующая
архитектура сервера накладывает существенные ограничения на его
использование.
Позже я пришёл к выводу, что часть неблокирующихся задач вполне можно
писать
на встраиваемом языке. Ну и кроме того, можно сделать обработчик запроса
в виде нескольких callback'ов, которые будут вызыватся после долгой
операции - резолвинг, ответ другого сервера, базы данных и прочая.
Разумеется, все эти длительные операции должны делаться не стандартными
средствами (gethostbynmame, connect и прочая), а обрабатываться самим
nginx'ом в неблокирующимся режиме.
Выбирать язык мне было особо не из чего. php, ruby и python я не знаю,
про lua читаю второй раз, а перл знаю не плохо и представляю, как его
встраивать. Что касается пожирания памяти, то, на мой взгляд, это зависит
от использования. perl есть память не всегда.