On 12/03/2007 05:54 PM, Pavel Stano wrote: > Plüm wrote: >>> -----Ursprüngliche Nachricht----- >>> Von: Pavel Stano >>> Gesendet: Montag, 3. Dezember 2007 09:53 >>> An: [email protected] >>> Betreff: apache 2.2 mod_proxy_http disable buffering >>> >>> >>> hello, >>> >>> it is possible to disable buffering in mod_proxy_http ? >>> or something like flush after each received data (i want this >> At least with 2.2.6 (possibly earlier 2.2.x versions) it has autoflushing. >> This means once there is no more data available for reading in the response >> stream from the backend it flushes what it got so far. So if your php script >> on the backend generates its response in blocks with pause times between them >> each of them will be send to the client immediately. >> >> Regards >> >> Rüdiger > > i have 2.2.6, but it dont work, proxy send me data after end of request > > i have very simple php script (or .cgi, i try it too) > <?php > echo 'A'; > echo 'B'; > sleep(5); > echo 'C'; > ?> > php buffering is configured ok, when i connect with telnet to backend > server a request a.php, it work as expected > it show immedietaly headers and AB and after 5 second it show C and > close connection > > when i connect to reverse proxy and request a.php, 5 second is silent > and after that it send me response > > maybe a bug in mod_proxy_http ? (or not a bug but broken feature :)) > > here is strace from that proxy > > ... we write request to backend > 22112 17:06:47.916530 writev(12, [{"GET /a.php HTTP/1.1\r\n", 21}, > {"Host: rtfm.home\r\n", 17}, {"Max-Forwards: 10\r\n", 18}, > {"X-Forwarded-For: 127.0.0.1\r\n", 28}, {"X-Forwarded-Host: > rtfm.home\r\n", 29}, {"X-Forwarded-Server: rtfm.home\r\n", 31}, > {"Connection: Keep-Alive\r\n", 24}, {"\r\n", 2}], 8) = 170 > > ... we got answer (headers and AB) > 22112 17:06:47.920203 read(12, "HTTP/1.1 200 OK\r\nDate: Mon, 03 D"..., > 8000) = 156 > 22112 17:06:47.920418 poll( <unfinished ...> > > ... here we want send first data to client, but we just wait for data >>from backend > > ... after 5 seconds we got C and send everything to client > 22112 17:06:52.920176 <... poll resumed> [{fd=12, events=POLLIN, > revents=POLLIN}], 1, 60000) = 1 > 22112 17:06:52.920232 read(12, "1\r\nC\r\n3\r\n \n\n\r\n0\r\n\r\n", > 8000) = 19 > 22112 17:06:52.920315 close(12) = 0 > 22112 17:06:52.920414 writev(11, [{"HTTP/1.1 200 OK\r\nDate: Mon, 03 > D"..., 139}, {"A", 1}, {"B", 1}, {"C", 1}, {" \n\n", 3}], 5) = 145 > 22112 17:06:52.920561 times({tms_utime=0, tms_stime=0, tms_cutime=0, > tms_cstime=0}) = 432369321 > 22112 17:06:52.920626 shutdown(11, 1 /* send */) = 0
Please provide a gdb backtrace of the process when it waits for data from the backend (http://httpd.apache.org/dev/debugging.html). Regards Rüdiger
