Перестала работать буферизация вывода

zarus

Хитрожопый макак
Перестала работать буферизация вывода

Не могу понять, в чем причина:
1. ob_start("ob_gzhandler",5);
2. session_start();
....
проверял - нигде нет ob_end_flush();
Но не работает и все тут... До добавления работы с сессиями все работало. Может кто сталкивался с подобной проблемой - сомневаюсь, что это глюк апача/пхп, скорее у меня где-то КЗ...
 

zarus

Хитрожопый макак
Там код на 200 строк, и состоит из десятка инклюдов. Я просто подумал, что не дружат ob_start и session_start. Так как ДО добавления session_start все работало как часы.
 

Serguitar

Новичок->продвинутый
Не знаю, у меня дружат вроде, пока по крайней мере не ругались. Ищи проблему. Ошибок ВООБЩЕ нет?
 

zarus

Хитрожопый макак
Автор оригинала: Serguitar
Не знаю, у меня дружат вроде, пока по крайней мере не ругались. Ищи проблему. Ошибок ВООБЩЕ нет?
Есть - ...headers cannot be sent : output has already been started at... :) Короче, буду копать скрипт...
 

fizot

Новичок
дык ты же вроде выводишь контент до того как запустил сессию, то есть пропиши сессион старт в самом начале скрипта
 

Serguitar

Новичок->продвинутый
))
Так у тебя проблема не в том, что дружат-не дружат, а сессия не в том месте запускается! Нечего копать, допиши в свой код такую функцию и вызывай.
Копирайт чей не помню, звиняйте...))
PHP:
function is_already_started() {	
static $already_started = 0;		
if ($already_started || headers_sent()) {		
return;	
}		
$already_started = 1;	
session_start();
}
 

zarus

Хитрожопый макак
Автор оригинала: fizot
дык ты же вроде выводишь контент до того как запустил сессию, то есть пропиши сессион старт в самом начале скрипта
У меня так и идет
1я строка: старт буфера
2я строка: старт сессии
далее код

А не надо ли проверять сессию - начата не начата?

-~{}~ 28.11.05 10:11:

Автор оригинала: Serguitar
))
Так у тебя проблема не в том, что дружат-не дружат, а сессия не в том месте запускается! Нечего копать, допиши в свой код такую функцию и вызывай.
Копирайт чей не помню, звиняйте...))
PHP:
function is_already_started() {	
static $already_started = 0;		
if ($already_started || headers_sent()) {		
return;	
}		
$already_started = 1;	
session_start();
}
Поподробнее про "сессия не в том месте запускается" - есть какие-то ограничения?
 

zarus

Хитрожопый макак
Нашел корень "зла"
ob_start("ob_gzhandler",5); заменил на ob_start(); и все заработало, но только непонятно ПОЧЕМУ!!! Ж(
 

Serguitar

Новичок->продвинутый
Мне все же кажется, что "корень зла" не совсем в этом.
Просто при передаче каких-то параметров для функции ob_start(); происходит посылка хедеров, либо вывод чего-то на экран до того, как запускается сессия. Отсюда и твоя ошибка.
 

zarus

Хитрожопый макак
При использовании ob_start("gz_handler"); ИЕ вообще вылетает с критической ошибкой. Поставил в настройках ПХП.ини zlib.compression = On.
Как проверить, сжимается ли страница?
Через fopen() + filesize()?
 
Сверху