das6745
Новичок
ob_implicit_flush issue
Доброго времени суток, я делаю свой небольшой движок(opensource), и вот дело дошло до контроля выводимых данных.
Задача такая: проверить какие Content-Encoding понимает браузер и в соответствии пережимать выводимые данные и отправлять их юзеру после _каждого_ принта или эха, а не в конце выполнения скрипта (чтоб буфер меньше тянул). Вообще сначала я сделал вывод в переменнцую всего содержимого, потом своей функцией жал и отдавал (глупо и неэкономно к ресурсам).
я начал использовать ф-цию ob_start со своим хендлом + ob_implicit_flush. Но почемуто
ob_implicit_flush не флашит данные после каждого вывода. Ман ничего по этому поводу неговорит. Гугл тоже, читал еще www.php.net/manual/en/function.flush.php
Вот маленький пример на которм я тестирую:
дает:
test: 12<br/>
ожидалось:
test: 1<br/>test: 2<br/>
Как сделать чтоб хендл дергался после каждого вывода, или может кто посоветует более элегантное решение?
p.s:
и это все на Apache/2.2.3 (Ubuntu) PHP/5.2.1 mod_ssl/2.2.3 OpenSSL/0.9.8c
Доброго времени суток, я делаю свой небольшой движок(opensource), и вот дело дошло до контроля выводимых данных.
Задача такая: проверить какие Content-Encoding понимает браузер и в соответствии пережимать выводимые данные и отправлять их юзеру после _каждого_ принта или эха, а не в конце выполнения скрипта (чтоб буфер меньше тянул). Вообще сначала я сделал вывод в переменнцую всего содержимого, потом своей функцией жал и отдавал (глупо и неэкономно к ресурсам).
я начал использовать ф-цию ob_start со своим хендлом + ob_implicit_flush. Но почемуто
ob_implicit_flush не флашит данные после каждого вывода. Ман ничего по этому поводу неговорит. Гугл тоже, читал еще www.php.net/manual/en/function.flush.php
но помоему это не мой случай....flush() has no effect on the buffering scheme of your web server or the browser on the client side. Thus you need to call both ob_flush() and flush() to flush the output buffers....
Вот маленький пример на которм я тестирую:
PHP:
<?php
function test($str) {
return 'test: '.$str."<br/>";
}
ob_start('test');
ob_implicit_flush(TRUE);
echo '1';
echo '2';
ob_end_flush
?>
test: 12<br/>
ожидалось:
test: 1<br/>test: 2<br/>
Как сделать чтоб хендл дергался после каждого вывода, или может кто посоветует более элегантное решение?
p.s:
и это все на Apache/2.2.3 (Ubuntu) PHP/5.2.1 mod_ssl/2.2.3 OpenSSL/0.9.8c