![]() |
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 не предлагать) Заранее всем спасибо =) |
AleXXXSoft
2. попробуй [P] 3. можно попробовать сразу отдавать заголовок "200 OK" и Content-type: chunken, и отдавать сгенерированный документ частями. |
Цитата:
3. пока думаю... :idontnow: |
а зачем вообще редирект нужен? убрать этот флаг и все :) URL перепишется и без него..
|
Цитата:
|
AleXXXSoft
Флаг R это как раз редирект. Нужен для перенаправления на внешний сервер. Если этого не нужно, то просто убери этот флаг. |
сервер внешний :(
т.е. как бы и не внешний... но порт меняется.... типа был localhost а стал localhost:81 |
Options +FollowSymLinks
RewriteEngine on RewriteRule ^(.*) http://www.yandex.ru/yandsearch?stype=www&rpt=rad&text=$1 [R,P] вот что у меня получилось. адрес в браузере не переписывается |
это у тебя через прокси сработало.. потому адрес и не переписался... а у меня, т.к. страница "все еще генерится" - апачевская прокся висит в дауне и думает.... пока сайт отдаст страницу.... в итоге выдает Proxy Error.... вот. А адрес не переписывается (это когда через прокси) - это у меня и раньше работало.. снова вернулись к первому вопрсоу...
|
отдавай по частям а не весь. Сгенерил строчку -- отдал браузеру и так пока все не сгенеришь.
|
Код:
RewriteEngine onа насчет частей... мне нужно, чтобы сокет был тот же.... т.е. я должен отдавать разными кусками по типу multipart/x-..... ? |
Отдаешь заголовок Transfer-Encoding: chunked, а потом перед каждой частью ставить длинну этой части.
получится что-то вроде 10 1234567890 20 12345678901234567890 0 ой. длину в шестнадцатиричном виде нужно ставить :) |
нифиха не понял... попробую)
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)); |
ИСПРАВИЛ, заработало с чукотским методом! НО:
апачевская прокся на все это положила))) так что по-прежнему это для меня не работает... видимо остается вопрос №1.... и только.... |
хелп....
:молись: |
можно попробовать выставить ProxyReceiveBufferSize и ProxyIOBufferSize поменьше
|
уже пробовал - ставил от 1 кб и больше - так он тогда ровно на этом куске и обрезал документ... дальше загрузки не было... :(
|
а если без прокси показывать эту страничку, она в браузер-то отображается?
|
само собой без прокси все работает! :idontnow:
|
такс! кое-что уже есть:
поэксперементировал с ProxyIOBufferSize и ProxyReceiveBufferSize, поставил ProxyReceiveBufferSize в 512 байт (это минимум в апачике), а ProxyIOBufferSize в [очень большое число], проблема стала лучше... как бы, т.е. он стал показывать документ, как только размер добирался до 512 байт, потом до 1024 байт и т.д. второй буффер - это как я понял размер который максимум выгружать. Вот что плохо, нужно чтобы изменения в документе сразу отражались в броузере... а этого не происходит. К тому же, видимо у прокси есть некий таймаут, по наступлению которого, обновляется соединение - следовательно меняется сокет и все отсюда вытекающее, загрузка начинается с начала. Что делать? ХЕЛП! Очень нужно, может использовать не апачевский прокси, а что-то другое (если такое вообще возможно)? |
у меня такая же здачаа. Скажите, AlexxxSoft, вам удалось её всё-таки решить и каким способом?
|
нет, увы, проблема есть...
|
| Часовой пояс GMT +4, время: 15:24. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.