IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   Apache и иже с ними (professional) (http://www.imho.ws/showthread.php?t=67197)

AleXXXSoft 28.08.2004 18:24

Apache и иже с ними (professional)
 
Люди, помогите!

Кто общался с Apache:

1. есть такой модуль mod_proxy - полезная в некоторых случаях вещь, так вот, как его настроить таким образом, чтобы он выдавал содержимое документа сразу с момента начала его загрузки с удаленного узла, не дожидаясь его полной загрузки?
Кэширование в принципе не важно, важно чтобы информация передавалась синхронно, по мере её появления в исходном документе. А то получается, что пока документ генерируется - прокси висит, а вскоре, после некоторого таймаута выдает ошибку. Грубо говоря: как заставить работать его с Connection: KeepAlive, сейчас он выдает заголовки типа Connection: Close и только.

2. вопрос еще такой, всем известный mod_rewrite - для редиректа использует команду [R], все работает, но адрес в строке броузера меняется, на тот, который переписывается, а должен бы остаться старый, в чем может быть проблема? Пробовал все статусы от 300 до 307.

3. вопрос уже на засыпку. Разрабатываю свой модуль к апачу, модулю необходимо при переходе управления к нему, оставлять у себя управление и генерировать документ, действие достаточно долгое (возможно, даже, и бесконечное), следовательно будет постоянно висеть копия апача в процессах, так вот, что с ней будет происходить, если стоит лимит на количество процессов апача (в настройках самого апача), т.е. плодится он не сможет при новых запросах, следовательно будет ошибка 500/503? Как этого избежать?

P.S.: Версия Apache/1.3.31

P.P.S.: Какие еще HTTP-серверы есть, для которых можно писать модули и т.д., для которых есть документация почитать, и которые, хоть где-то используются? (IIS не предлагать)

Заранее всем спасибо =)

is_absent 30.08.2004 08:41

AleXXXSoft
2. попробуй [P]
3. можно попробовать сразу отдавать заголовок "200 OK" и Content-type: chunken, и отдавать сгенерированный документ частями.

AleXXXSoft 31.08.2004 12:23

Цитата:

is_absent:
AleXXXSoft
2. попробуй [P]
3. можно попробовать сразу отдавать заголовок "200 OK" и Content-type: chunken, и отдавать сгенерированный документ частями.
2. ты меня сразу отправляешь снова к 1 вопросу....
3. пока думаю... :idontnow:

is_absent 31.08.2004 12:35

а зачем вообще редирект нужен? убрать этот флаг и все :) URL перепишется и без него..

AleXXXSoft 31.08.2004 15:03

Цитата:

is_absent:
а зачем вообще редирект нужен? убрать этот флаг и все URL перепишется и без него..
вот именно, перепишется, а мне нужно, чтобы он оставался в броузере старым...

is_absent 31.08.2004 15:30

AleXXXSoft
Флаг R это как раз редирект. Нужен для перенаправления на внешний сервер. Если этого не нужно, то просто убери этот флаг.

AleXXXSoft 31.08.2004 15:36

сервер внешний :(

т.е. как бы и не внешний... но порт меняется.... типа был localhost а стал localhost:81

is_absent 31.08.2004 15:40

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*) http://www.yandex.ru/yandsearch?stype=www&rpt=rad&text=$1 [R,P]

вот что у меня получилось. адрес в браузере не переписывается

AleXXXSoft 31.08.2004 16:07

это у тебя через прокси сработало.. потому адрес и не переписался... а у меня, т.к. страница "все еще генерится" - апачевская прокся висит в дауне и думает.... пока сайт отдаст страницу.... в итоге выдает Proxy Error.... вот. А адрес не переписывается (это когда через прокси) - это у меня и раньше работало.. снова вернулись к первому вопрсоу...

is_absent 31.08.2004 16:10

отдавай по частям а не весь. Сгенерил строчку -- отдал браузеру и так пока все не сгенеришь.

AleXXXSoft 31.08.2004 16:20

Код:

RewriteEngine on
RewriteBase /
RewriteRule ^stream(.*) http://localhost:81/stream/$1 [R,P]

вот ЭТО

а насчет частей... мне нужно, чтобы сокет был тот же.... т.е. я должен отдавать разными кусками по типу multipart/x-..... ?

is_absent 31.08.2004 16:54

Отдаешь заголовок Transfer-Encoding: chunked, а потом перед каждой частью ставить длинну этой части.
получится что-то вроде
10
1234567890
20
12345678901234567890
0

ой. длину в шестнадцатиричном виде нужно ставить :)

AleXXXSoft 31.08.2004 18:40

нифиха не понял... попробую)

P.S. а как же тогда всякие поточные чаты работают через прокси?

короче, шото у меня с этим Transfer-Encoding: Chunked вообще все перестало работать..... в принципе... даже напрямую, может я чего не так делаю?

Код:

$string="Transfer-Encoding: Chunked\r\n\r\n".dechex(strlen($_out))."\r\n".$_out
вот фрагмент того, что выдается - это когда первый раз, каждый следующий раз просто

Код:

$string="\r\n".dechex(strlen($_out))."\r\n".$_out
сразу оговорюсь, работаю напрямую с сокетами! т.е. вот эта созданная строка отдается таким образом:

Код:

socket_write($msock, $string, strlen($string));
проверки на все ошибки есть, поэтому здесь их и не указываю. Вот когда сделал этот чукотский метод - перестало вовсе работать... :idontnow:

AleXXXSoft 31.08.2004 19:48

ИСПРАВИЛ, заработало с чукотским методом! НО:

апачевская прокся на все это положила))) так что по-прежнему это для меня не работает... видимо остается вопрос №1.... и только....

AleXXXSoft 02.09.2004 09:20

хелп....

:молись:

is_absent 02.09.2004 09:27

можно попробовать выставить ProxyReceiveBufferSize и ProxyIOBufferSize поменьше

AleXXXSoft 02.09.2004 11:22

уже пробовал - ставил от 1 кб и больше - так он тогда ровно на этом куске и обрезал документ... дальше загрузки не было... :(

is_absent 02.09.2004 12:02

а если без прокси показывать эту страничку, она в браузер-то отображается?

AleXXXSoft 02.09.2004 13:42

само собой без прокси все работает! :idontnow:

AleXXXSoft 02.09.2004 14:59

такс! кое-что уже есть:

поэксперементировал с ProxyIOBufferSize и ProxyReceiveBufferSize, поставил ProxyReceiveBufferSize в 512 байт (это минимум в апачике),
а ProxyIOBufferSize в [очень большое число], проблема стала лучше... как бы, т.е. он стал показывать документ, как только размер добирался до 512 байт, потом до 1024 байт и т.д.
второй буффер - это как я понял размер который максимум выгружать. Вот что плохо, нужно чтобы изменения в документе сразу отражались в броузере... а этого не происходит. К тому же, видимо у прокси есть некий таймаут, по наступлению которого, обновляется соединение - следовательно меняется сокет и все отсюда вытекающее, загрузка начинается с начала.

Что делать? ХЕЛП! Очень нужно, может использовать не апачевский прокси, а что-то другое (если такое вообще возможно)?

ALikD 02.12.2005 15:05

у меня такая же здачаа. Скажите, AlexxxSoft, вам удалось её всё-таки решить и каким способом?

AleXXXSoft 02.12.2005 16:07

нет, увы, проблема есть...


Часовой пояс GMT +4, время: 15:24.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.