Главная страница


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/400     22 Jun 2004  14:17:40
 To : Alexander V. Gaiduk
 Subject : Re: mod_perl - глюк?
 -------------------------------------------------------------------------------- 
 
 Alexander V. Gaiduk  @ Mon, 21 Jun 2004 10:25:54 +0000 (UTC):
 
  AVG> вопрос в лоб:
  AVG> как под mod_perl читать читать данные с формы по методу POST?
 
  AVG> предыстория глюка:
 
  AVG> ваял тут движок для сайтика на Apache::ASP, (у этой АСПы внутре mod_perl)
  AVG> сперва ваял на Win32 - типа всё путем, отлично пахало, никаких траблов.
  AVG> но подумалось, ведь это чудо будет на линухе жить, поставил под
  AVG> VMware линух, RH9, водрузил туда (на имеемый mod_perl) Apache::ASP,
  AVG> завелось, поехало. Продолжая ваять наткнулся на забавный глюк:
 
  AVG> при передаче с формы данных по методу POST скрипт видит только
  AVG> первые 7.5 кило, и грит типа больше нету...
  AVG> проверил это же на Win32 - работает сабака, кушает POSTом до 14 метров
  AVG> данных, и ничего не теряет.
  AVG> перенес эту же страничку на линух - 7.5 кило и хоть ты тресни!
 
  AVG> стал ковырять дальше по исходникам Apache::ASP дополз до BinaryRead...
  AVG> там они просто читают из закэшированного буфера: $r->read($data, $length);
  AVG> получаем 7.5 кило !
 
  AVG> это же под виндой читает ВСЁ !!!
 
  AVG> дальше стал исследовать саму отправку данных методом POST - его отличия
  AVG> линуховой и виндовой реализации mod_perl.
 
  AVG> нарисовал простейший скриптик, где читаю:
  AVG>   read(STDIN, $data, $ENV{'CONTENT_LENGTH'});
  AVG> под виндой - все читает, под линухом 7.5 кило!
 
  AVG> выяснилось, что если читать в цикле:
  AVG> while (read(STDIN, $buf, $ENV{'CONTENT_LENGTH'})>0) {$data .= $buf;}
  AVG> то и в виндозе и в линухе читается всё !!!
 
  AVG> причем при детальном исследовании оказалось, что в виндозе все данные
  AVG> сразу помещаются в буфер чтения STDIN в mod_perl, а в линухе
  AVG> буфер чтения ограничен 8000 байтами, но тем не менее все данные от туда
  AVG> тоже можно вычитать (читать - пока читаются)...
 
  AVG> пришлось такой циклик воткнуть в Apache::ASP::Request
  AVG> в функцию BinaryRead - после этого все поехало прально.
 
  AVG> Скажите, почему такое разное поведение mod_perl в линухе и в вындосе?
 
 Я бы порекомендовал посмотреть настройки апача.  Hа предмет ограничения
 принимаемого количества данных.  А еще - обратить внимание на его
 версию.  Если там 2.x и соответствующий mod_perl - лучше откатиться на
 1.3.x.  AFAIR эту связку еще не довели до работоспособного состояния.
 
 -- 
 Artem Chuprina
 RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/122.256, ICQ: 13038757
 --- ifmail v.2.15dev5.3
  * Origin: Leninsky 45 home network (2:5020/400)
 
 

Вернуться к списку тем, сортированных по:

 Тема:    Автор:    Дата:  
 mod_perl - глюк?   Alexander V. Gaiduk   21 Jun 2004 14:25:54 
 Re: mod_perl - глюк?   Artem Chuprina   22 Jun 2004 14:17:40 
 Hа: mod_perl - глюк?   Alexander V. Gaiduk   22 Jun 2004 15:51:33 
 Re: Hа: mod_perl - глюк?   Artem Chuprina   23 Jun 2004 22:37:38 
 Hа: Hа: mod_perl - глюк?   Alexander V. Gaiduk   24 Jun 2004 12:11:43 
 Re: Hа: Hа: mod_perl - глюк?   Artem Chuprina   24 Jun 2004 15:25:38 
 Hа: Hа: Hа: mod_perl - глюк?   Alexander V. Gaiduk   24 Jun 2004 17:14:12 
 Re: Hа: Hа: Hа: mod_perl - глюк?   Artem Chuprina   24 Jun 2004 21:04:23 
 Re: mod_perl - глюк?   Andrey Sapozhnikov   25 Jun 2004 18:08:06 
 Hа: mod_perl - глюк?   Alexander V. Gaiduk   28 Jun 2004 11:30:48 
 Re: Hа: mod_perl - глюк?   Andrey Sapozhnikov   28 Jun 2004 16:01:20 
Архивное /ru.cgi.perl/2560636c767c9.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional