ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА














     АРХИВ :: Apache-Talk
Apache-Talk mailing list archive (apache-talk@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [apache-talk] mod_perl



On Wed, 4 Oct 2000, Andrey Brindeew wrote:

> From: Andrey Brindeew <abr@tool.ru>
> Subject: [apache-talk] mod_perl
> X-Mailer: XFMail 1.4.4 on Linux
> 
> -----BEGIN PGP SIGNED MESSAGE-----
> 
> Hello!
> 
> Что-то я совсем запутался в сабже. Как под него писать "по-нормальному"?
> Т.е. не использовать Apache::Registry в качестве среды для эмуляции CGI.

По-нормальному - все делать в виде модулей.

 
> Конкретный вопрос: насчет Perl handlers: один хэндлер должен обрабатывать 
>много
> скриптов (все?) или один? Вопрос, собственно возник из-за database persistant

Если у тебя все сделано в виде модулей, то у тебя нет такого понятия как
"скрипт". Есть понятие location или URI, которая есть некая строка,
указанная пользователем в качестве URL, либо есть shtml-файлы, содержащие
<!--#perl sub=Module::sub arg=...-->

Один и тот же хэндлер может, естественно, обрабатывать много URL.
Как он их будет различать - его глубокое личное дело.
Он может, например, вытащить uri из переданного к нему объекта
Apache::Request и сам ее проанализировать.


> connection. Если каждый handler обслуживает один скрипт, тогда имеем
> максимальный оверхэд в размере <кол-во детей Апача> * <кол-во скриптов> *
> <кол-во коннектов в одном скрипте>, что не есть good.

Естественно. Persistent database connection имеют смысл если у тебя по
одной (в крайнем случае по N, где N маленькое фиксированное число (<5) не
зависящее от количества выполненных этой копией запросов).

Если у тебя есть несколько хэндлеров, использующих одни и те же права
доступа к базе, то имеет смысл разделять коннект между ними, например,
объявив его глобальной переменной некоего общего модуля, который сам
хэндлером не является, но всеми хэндлерами используется. А открывать это
соединение из PerlChildInitHandler. Или сделать все хэндлеры процедурами в
одном и том же модулями, а коннект хранить в глобальной переменной этого
модуля.  
 
А несколько коннектов в одном скрипте это по-моему в любом случае бред
собачий.

-- 
Victor Wagner                   vitus@ice.ru
Programmer                      Office:7-(095)-785-09-72
Communiware.Net                 Home: 7-(095)-135-46-61
http://www.communiware.net      http://www.ice.ru/~vitus

=============================================================================
=               Apache-Talk@lists.lexa.ru mailing list                      =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
=       Archive avaliable at http://www.lexa.ru/apache-talk                 =



 




Copyright © Lexa Software, 1996-2009.