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.nethttp://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 =