За последние 24 часа нас посетили 17643 программиста и 1655 роботов. Сейчас ищут 950 программистов ...

ob_clean()

Тема в разделе "PHP для новичков", создана пользователем lurii, 30 сен 2008.

  1. lurii

    lurii Активный пользователь

    С нами с:
    30 сен 2008
    Сообщения:
    40
    Симпатии:
    0
    Почему ob_clean() очищает буфер при вызове ob_start() и не срабатывает при вызове ob_start("ob_gzhandler",9)?
     
  2. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Могу предположить, что ob_gzhandler срабатывает уже после выполнения кода.
     
  3. lurii

    lurii Активный пользователь

    С нами с:
    30 сен 2008
    Сообщения:
    40
    Симпатии:
    0
    Хорошо, как очистить буфер после вызова этой ф-ции?
    Т.е. нужно чтобы срабола вот этот код, ничего не выдавая в браузер перекинуть на другую страницу:
    Код (Text):
    1. <?
    2. ob_start("ob_gzhandler",9);
    3. ?>
    4. text text text text text
    5. <?
    6. ob_clean();
    7. Header("Location: i.php");
    8. ob_flush();
    9. exit();
    10. ?>
    11. text1 text1 text1 text1 text1
     
  4. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Мб так

    PHP:
    1. <?
    2. ob_start('ob_gzhandler', 9);
    3.  
    4. print 'hello, world!';
    5.  
    6. print 'привет, мир!';
     
  5. lurii

    lurii Активный пользователь

    С нами с:
    30 сен 2008
    Сообщения:
    40
    Симпатии:
    0
    Отлично, в мой код надо было всего-то вставить одну доп.строку:
    Код (Text):
    1. <?
    2. ob_start("ob_gzhandler",9);
    3. ob_start();
    4. ?>
    5. text text text text text
    6. <?
    7. ob_clean();
    8. Header("Location: i.php");
    9. ob_flush();
    10. exit();
    11. ?>
    12. text1 text1 text1 text1 text1
    но тут возникает вопрос: ob_clean(); и далее до exit(); вызывается не всегда - это содержимое моей ф-ции redirect($url)

    так вот, а если не будет вызова этоой ф-ции и очистки буфера при этом в браузер выдается именно сжатый контент или обычный?
     
  6. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    сжатый
     
  7. lurii

    lurii Активный пользователь

    С нами с:
    30 сен 2008
    Сообщения:
    40
    Симпатии:
    0
    Большое спасибо, заработало.

    Теперь вот вылезли проблемы.
    В заголовке страницы, т.е. стили генерятся на php - не подключаются ...
    <link rel="Stylesheet" href="../inc/style.php?r=<?=rnd()?>" type="text/css">
    Точнее они срабатывают только после Ctrl+F5
    Даже если все страницы с рандомным ключем и адрес у стиля тоже с рандомом ...
    То ж самое и при подключения js.php
    Сейчас просто обрабатываю, если это стилевой файл или скрипт, то обычный ob_start без сжатия.
    Ну и в IE6 просмотр исходного кода доступен тоже только после рефреша страницы.
    Что это? - настолько жесткое кеширование браузером?

    Еще вопрос: при обычной передаче браузер выводит содержимое по мере поступления, а при сжатии - пока весь пакет не получит ничего не выводит? Ускорения загрузки субъективно не выявил ...