Russian Apache Switch to English
Switch to Russian koi8-r
windows=1251
cp-866
iso8859-5
Russian Apache Как это работает Рекоммендации Где взять Как установить Как настроить Статус и поддержка
Краткий обзор FAQ Список рассылки Благодарности Поиск по серверу Powered by Russian Apache
Russian Apache mailing list archive (apache-rus@lists.lexa.ru)

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

Re: [apache-talk] =?koi8-r?Q?=F3=D4=D2=C1=CE=CE=CF=C5_=D0=CF=D7=C5 =C4=C5=CE=C9=C5_mod?= _perl



On Thu, 29 Apr 1999, Ilya Obshadko wrote:

> И я знаю, какая это система Ж-) Кстати, вместо PerlSSI лучше использовать
> какую-нибудь из существующих надстроек типа HTML::Embperl, HTML::Mason
> (который, кстати, умеет кэшировать результаты), Apache::ASP,
> Apache::ePerl и т.д.

Не лучше, а хуже. Они все слишком много позволяют. А у меня шаблоны
страниц дизайнеры через web-интерфейс редактируют. Поэтому у меня
есть собственный препроцессор, который запрещает все, что не разрешено.
А после такого препроцессора - зачем overhead на надстройки.
У меня даже <!--#include virtual сказать явно нельзя. Тем более, что
планируется в дальнейшем перейти к двухпроходной обработке запроса,
и препроцессор уже сейчас генерит две формы - просто последовательность
вызова процедур и html с perl-ssi.

> > При этом в Fixup-хэндлере для PerlSSI-страниц создается объект CGI,
> > который живет в глобальной переменной модуля, и используется в
> > соответствующих вызовах <!--#perl sub.
> 
> Не есть правильно. Если ты хранишь данные о сессии, используй
> Apache::Session или механизм cookies напрямую (насколько я понимаю,
> Apache::Session тоже реализован с использованием cookie).

Я не храню данных о сессии. Я храню данные о текущем запросе. 
Поскольку perl-ssi вызовов в одной странице могут быть сотни и overhead
на создание CGI из cgi_env каждый раз не очень приемлем.

> > Некоторое время все это жило и каши не просило, но вдруг (после
> > глобального переписывания) был замечен такой эффект, что 
> > нечто (как правило параметр запроса) переживает текущий http запрос
> > и в результате если Registry скрипт случайно обрабатывается копией httpd
> > где все это живет, поведение его совершенно непредсказуемо.
> 
> Проведи тривиальную трассировку: поставь в ключевых точках 
> print STDERR "Stage $stage : value $variable"; 

Ну, в том-то и дело, что без -X это не помогает. Даже если
в этот print $$ ставить.

> > Попытка заменить local %ENV
> > на 
> > my %oldenv = %ENV;
> > %ENV = $r->cgi_env;
> > &init_context
> > %ENV=%oldenv
> > 
> > положение сильно не улучшила. 
> 
> А local вообще не стоит использовать в mod_perl - это же аналог сишного
> static, насколько я ничего не понимаю...

Насколько я ничего не понимаю после прочтения Advanced Perl programming,
local это именно то что нужно. В нормальных перловых скриптах я регулярно
local $_ использую внутри процедур, вызваемых из while (<>) 
Схемку как работает перловая система поиска имен на память не
воспроизведу, да и off-topic это



--------------------------------------------------
Victor Wagner			vitus@xxxxxx
Programmer			Office:7-(095)-964-0380
Institute for Commerce 		Home: 7-(095)-135-46-61
Engineering                     http://www.ice.ru/~vitus

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






Спонсоры сайта:

[ Russian Apache ] [ Как это работает ] [ Рекомендации ] [ Где взять ] [ Как установить ] [ Как настроить ] [ Статус и поддержка ] [ Краткий обзор ] [ FAQ ] [ Список рассылки ] [ Благодарности ] [ Поиск по серверу ] [ Powered by Russian Apache ] [ Apache-talk archive ]

"Russian Apache" includes software developed by the Apache Group for use in the Apache HTTP server project (http://www.apache.org/) See Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C) 1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.