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


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Alexander V. Gaiduk                  2:5020/400     21 Jun 2004  14:25:54
 To : All
 Subject : mod_perl - глюк?
 -------------------------------------------------------------------------------- 
 
 вопрос в лоб:
 как под mod_perl читать читать данные с формы по методу POST?
 
 предыстория глюка:
 
 ваял тут движок для сайтика на Apache::ASP, (у этой АСПы внутре mod_perl)
 сперва ваял на Win32 - типа всё путем, отлично пахало, никаких траблов.
 но подумалось, ведь это чудо будет на линухе жить, поставил под
 VMware линух, RH9, водрузил туда (на имеемый mod_perl) Apache::ASP,
 завелось, поехало. Продолжая ваять наткнулся на забавный глюк:
 
 при передаче с формы данных по методу POST скрипт видит только
 первые 7.5 кило, и грит типа больше нету...
 проверил это же на Win32 - работает сабака, кушает POSTом до 14 метров
 данных, и ничего не теряет.
 перенес эту же страничку на линух - 7.5 кило и хоть ты тресни!
 
 стал ковырять дальше по исходникам Apache::ASP дополз до BinaryRead...
 там они просто читают из закэшированного буфера: $r->read($data, $length);
 получаем 7.5 кило !
 
 это же под виндой читает ВСЁ !!!
 
 дальше стал исследовать саму отправку данных методом POST - его отличия
 линуховой и виндовой реализации mod_perl.
 
 нарисовал простейший скриптик, где читаю:
   read(STDIN, $data, $ENV{'CONTENT_LENGTH'});
 под виндой - все читает, под линухом 7.5 кило!
 
 выяснилось, что если читать в цикле:
 while (read(STDIN, $buf, $ENV{'CONTENT_LENGTH'})>0) {$data .= $buf;}
 то и в виндозе и в линухе читается всё !!!
 
 причем при детальном исследовании оказалось, что в виндозе все данные
 сразу помещаются в буфер чтения STDIN в mod_perl, а в линухе
 буфер чтения ограничен 8000 байтами, но тем не менее все данные от туда
 тоже можно вычитать (читать - пока читаются)...
 
 пришлось такой циклик воткнуть в Apache::ASP::Request
 в функцию BinaryRead - после этого все поехало прально.
 
 Скажите, почему такое разное поведение mod_perl в линухе и в вындосе?
 
 --
 С уважением, вебмастер мэрии Архангельска :: ::
 $_='q=6I2?56CPw2:5F<Pl82Gp2C94:EJ^CFn';tr#P-~\x20-O#\x20-~#;print;
 
 --- ifmail v.2.15dev5.3
  * Origin: Internet-Arkhangelsk Company (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/8926be2632c5.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional