![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Дмитрий Волков |
|
|||
|
Unregistered |
Появилась задача ускорить работу скриптов. В связи с этим возникло несколько вопросов.
1. Что даст больший результат mod_perl или fastcgi (может есть ещё лучшие альтернативы)? 2. Есть основной скрипт к которому происходит частое обращение. Он в свою очередь содержит подрубаемые модули (use Модуль; use Модуль2; и т.д.). На сколько я знаю mod_perl один раз компилирует все модули, который использовал скрипта потом их держит в памяти пока Apache не перезагрузится. Мало того Apache можно указать, что компилировать при старте. Так вот вопрос: есть ли эти возможности у fastcgi. 3. Позволяет fastcgi держать постоянное соединение с MySQL посредством DBI? |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 13 Всего: 61 |
Давай для начала разберёмся что делает FastCGI, а затем посмотрим, что делает mod_perl! FastCGI - расширение сервера, позволяющее преобразовывать CGI-сценарии в постоянные приложения типа сервер с продолжительным выременем жизни. Сервер при запуске порождает процесс FastCGI для каждого определённого CGI-скрипта, и эти процессы отвечают на запросы до тех пор, пока они не будут явно завершены. Если ожидается, что кокое-то приложение будет использоваться чаще других, можно создать несколько процессов для обработки одновременных запросов. У такого подхода есть несколько приимуществ. Обычная CGI-программа требует при вызове дополнительных временных затрат на порождение процессов и интерпретирование кода. Если код требует дополнительной инициализации, это тоже добавляется к затраченому времени. В FastCGI приложении таких проблем нет. Здесь при каждом запросе не порождается новое приложение, вместо этого вся инициализация происходит при первом запуске. Так как время жизни этих приложений достаточно продолжительное, они позволяют сохранять данные между запросами, что тоже является преимуществом. Еще, если в приложении используется CGI.pm, то можно задействовать интерфейс к FastCGI - модуль CGI::Fast, включённый в стандартный набор модуля CGI.pm. mod_perl - расширение сервера Apache, встраивающее Perl в Apache, обеспечивая Perl интерфейс к Apache API. Это позволяет на Perl разрабатывать модули к Apache, для того, что бы обрабатывать определённые уровни запросов от клиента. Так как Perl встроен в сервер, нет затрат на запуск внешнего интерпретатора. Кроме того, можно загрузить и скомпилировать все нужные внешние Perl-модули на стадии загрузки сервера, а не в процессе выполнения приложения. Кстати, самым распространённым модулем Apache/Perl является Apache::Registry, он эмулирует CGI окружение, позволяя писать CGI пограммы, выполняющиеся в mod_perl. Также были зафиксированы случаи, когда пользователи сообщали, что при совместном использовании mod_perl и Apache::Registry производительность увеличивалась до 2000%. С такими скриптами, даже PHP не потягается. ;) Теперь настало время познакомиться с Apache::Registry. Apache::Registry - обработчик ответов, другими словами он отвечает за генерацию ответов, посылаемых клиенту. Он создаёт уровень над CGI программами, запускает программы и посылает результат клиенту. Можно также реализовать собственный обработчик ответов для обслуживания запросов. Как это делается, можно прочитать в книге Writing Apache Modules with Perl and C, Линкольна Штейна и Дуга Макичерна, издательство O'Reilly. Второй вопрос тоже получил свой ответ, а что касается третьего вопроса: Думаю что FastCGI или mod_perl, а также DBI позволят делать всё, что позволяет модуль DBI в обычном CGI-приложении. Правда я сам никогда этим не пользовался, как-то не приходилось, но это не тяжело проверить. Удачи. Это сообщение отредактировал(а) korob2001 - 6.4.2004, 21:04 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
![]()
|
| Правила форума "Perl: CGI программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |