Как узнать, где данные буферизируются по протоколу HTTP? - PullRequest
0 голосов
/ 04 июля 2011

Я пытаюсь использовать ранний сброс с php5 / apache2 для выполнения некоторого кода, рендеринга некоторого json и после этого выполнения другой части кода, которая занимает несколько секунд, но не дает никакого ответа.Основной код на данный момент:

@apache_setenv('no-gzip', 1);
@ini_set('zlib.output_compression', 0);

echo 'Page loading'; // code to render;
ob_flush();
flush();

sleep(29); // LONG time code to execute

Предыдущий пример не работает.Я имею в виду, что он будет отображать «Загрузка страницы» через 29 секунд.Если я посмотрю на http ответ, который у меня есть:

(Status-Line)   HTTP/1.1 200 OK
Date    Mon, 04 Jul 2011 19:49:19 GMT
Server  Apache/2.2.11 (Win32) mod_ssl/2.2.11 OpenSSL/0.9.8k PHP/5.3.0
X-Powered-By    PHP/5.3.0
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control   no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma  no-cache
Keep-Alive  timeout=5, max=100
Connection  Keep-Alive
Transfer-Encoding   chunked
Content-Type    text/html

Моя проблема не совсем, почему она не работает?но как я могу проверить, где моя строка буферизируется?Я знаю, что есть другой буфер: - php output_buffer, php zlib.buffer - apache mode_deflate / gzip - буферизация в браузере

Все выходные буферы php выключены, apache mode_deflate активирован, но, как вы можете видеть, кодировка передачи"кусочек".Я понятия не имею, как узнать, где моя проблема, я использую HttpFox, чтобы увидеть заголовок, и я пытаюсь получить содержимое HTTP-запроса, HttpFox говорит, что содержимое не готово, пока 29 секунд не будет сделано.

Любой совет?

Ответы [ 2 ]

0 голосов
/ 12 июля 2011

Марк Б был прав ...

Мне пришлось сделать цикл из 1000, с активированным output_buffering

$var = 1000;
while(--$var)
    echo 'Page loading'; // code to render;

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

Мне нужно в цикле 100 с output_buffering = off, чтобы получить тот же результат.

0 голосов
/ 05 июля 2011

Хм, вы пробовали ob_get_level () ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...