Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вывод текста в браузер, минуя перехват буфера (ob_start + ob_get_contents + ob_end_clean)
|
|||
|---|---|---|---|
|
#18+
Имеется код: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. Сделал так, как указано здесь: http://borkweb.com/story/bypassing-output-buffering-in-php Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. но в этом случае: а) строка $str не попадает ни в браузер, ни в логи б) не генерируется никаких ошибок и предупреждений php (уровень ошибок php у меня максимальный - вплоть до debug) в) функция fwrite корректно возвращает число байт (байтовую длину строки) Вопросы: 1) Куда в приведённом коде записывает строку функция fwrite ? 2) Как вывести текст в браузер, минуя перехват буфера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 21:48 |
|
||
|
Вывод текста в браузер, минуя перехват буфера (ob_start + ob_get_contents + ob_end_clean)
|
|||
|---|---|---|---|
|
#18+
Куда все подевались ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2014, 14:20 |
|
||
|
Вывод текста в браузер, минуя перехват буфера (ob_start + ob_get_contents + ob_end_clean)
|
|||
|---|---|---|---|
|
#18+
а нефик в stdout писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2014, 14:23 |
|
||
|
Вывод текста в браузер, минуя перехват буфера (ob_start + ob_get_contents + ob_end_clean)
|
|||
|---|---|---|---|
|
#18+
Cyrax_02, Код: php 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2014, 14:53 |
|
||
|
Вывод текста в браузер, минуя перехват буфера (ob_start + ob_get_contents + ob_end_clean)
|
|||
|---|---|---|---|
|
#18+
точно не скажу, но помню что уменя запись в стдаут поламалась, даже если вызвать об_клин при не включеном буфере.... вообщем говоря, как обойти буферизацию. посути ИМЕЕМ включить буфер, выключить буфер, получить буфер, очистить буфер. других функций нам не дано. поэтому вклюниваясь по срединке, мы можем - выключить буфер, получить содержимое, очистить, сделать вывод свой, обратно включить буфер, и вывести в него содежимое что из буфера и выдрали. вам чего надобно то...был код который буферизирует весь вывод, и не переделывая ничего хотите чтото в браузер вывести... хм... напрашиваеться одно только. создать класс, который будет сам собирать всё что браузеру причитаеться, и назначить ему деструктор, который отключает буферизацию, и делает вывод...но это чревато, ибо после срабатывания деструктора, возможен ещо какойто вывод, что должно было попадать в лог. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2014, 19:29 |
|
||
|
Вывод текста в браузер, минуя перехват буфера (ob_start + ob_get_contents + ob_end_clean)
|
|||
|---|---|---|---|
|
#18+
Ошибся малёк. почитал и всё стало на свои места. stdout - это консоль. вывод в браузер это output :) последнее выводит точно тудаже куда и команды ехо. как сделать вывод кудато ещо можно писать в php://memory php://temp но опять же стаёт вопрос - как детектировать что буферы больше не нужны, что уже можно их выключить и делать вывод для браузера, если не менять особо существующий код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2014, 19:43 |
|
||
|
Вывод текста в браузер, минуя перехват буфера (ob_start + ob_get_contents + ob_end_clean)
|
|||
|---|---|---|---|
|
#18+
DarkMasterCyrax_02, Код: php 1. 2. 3. 4. 5. 6. 7. 8. Не совсем понял пример. Вернее, вообще не понял. Согласно сабжу, вместо print("String for buffer...."); должна выполниться функция, которая принудительно выводит текст в браузер, минуя внешнюю (по отношению к функции) буферизацию. При это менять внешний код (выполняющий буферизацию) мы не можем. Менять можем только действия, выполняемые внутри функции. авторвам чего надобно то...был код который буферизирует весь вывод, и не переделывая ничего хотите чтото в браузер вывести...Именно. Внутри функции выводим текст в браузер, обойдя при этом внешнюю (по отношению к функции) буферизацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2014, 16:52 |
|
||
|
Вывод текста в браузер, минуя перехват буфера (ob_start + ob_get_contents + ob_end_clean)
|
|||
|---|---|---|---|
|
#18+
авторstdout - это консоль. вывод в браузер это output :) последнее выводит точно тудаже куда и команды ехо. Да, действительно. Вместо STDOUT нужно было использовать OUTPUT. Но output при использовании fwrite по-прежнему перехватывается внешней буферизацией. Остаётся только вариант с отключением/включением буферизации... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2014, 16:55 |
|
||
|
Вывод текста в браузер, минуя перехват буфера (ob_start + ob_get_contents + ob_end_clean)
|
|||
|---|---|---|---|
|
#18+
Вот решение: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Тест: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Получаем: авторЭта строка должна попасть в браузер (before buffering 1) (after buffering 1) [capture buffer 1: (before buffering 2) (after buffering 2) [capture buffer 2 : (before superFunc) (after superFunc) ] ] Вроде, всё правильно ? Можно вводить в эксплуатацию ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2014, 18:51 |
|
||
|
Вывод текста в браузер, минуя перехват буфера (ob_start + ob_get_contents + ob_end_clean)
|
|||
|---|---|---|---|
|
#18+
Cyrax_02Вот решение: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Тест: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Получаем: авторЭта строка должна попасть в браузер (before buffering 1) (after buffering 1) [capture buffer 1: (before buffering 2) (after buffering 2) [capture buffer 2 : (before superFunc) (after superFunc) ] ] Вроде, всё правильно ? Можно вводить в эксплуатацию ?Cyrax_02, обломайся. Код: php 1. 2. 3. 4. 5. Без superFunc выводит dcba dcba, с superFunc - abcd abcd. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2014, 07:42 |
|
||
|
Вывод текста в браузер, минуя перехват буфера (ob_start + ob_get_contents + ob_end_clean)
|
|||
|---|---|---|---|
|
#18+
Так я знаю про этот "артефакт". Анонимные callback-обработчики при получении информации о буферах вывода имеют имя "default output handler" - то же самое, что и при отсутствии callback-обработчиков. В вашем примере после вызова superFunc обработчик просто-напросто не вызывается. Думаю, восстановить анонимный callback-обработчик вам труда не составит ? Или слабо ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2014, 08:57 |
|
||
|
Вывод текста в браузер, минуя перехват буфера (ob_start + ob_get_contents + ob_end_clean)
|
|||
|---|---|---|---|
|
#18+
Cyrax_02Так я знаю про этот "артефакт". Анонимные callback-обработчики при получении информации о буферах вывода имеют имя "default output handler" - то же самое, что и при отсутствии callback-обработчиков. В вашем примере после вызова superFunc обработчик просто-напросто не вызывается. Думаю, восстановить анонимный callback-обработчик вам труда не составит ? Или слабо ?Мне то зачем его восстанавливать, это ваша идея. По мне сама ваша постановка задачи - признак ошибки проектирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2014, 15:43 |
|
||
|
Вывод текста в браузер, минуя перехват буфера (ob_start + ob_get_contents + ob_end_clean)
|
|||
|---|---|---|---|
|
#18+
авторПо мне сама ваша постановка задачи - признак ошибки проектирования. Цыган ? Постановку задачи я не озвучивал )) Ошибки в проектировании у меня нет. Просто-напросто, пишу свою программную систему (надстройку) над другой постоянно обновляющейся (разработкой которой я не занимаюсь). Естественно, логику работы своей системы я ориентирую на неё, но 100%-ной логической интеграции, очевидно, достичь практически нереально. Более того, данный "хук" использую исключительно в целях отладки и в ядро своей системы не интегрирую. Да и вообще, с вашей стороны это неконструктивное дистанцирование от озвученной проблемы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2014, 23:47 |
|
||
|
|

start [/forum/topic.php?fid=23&fpage=72&tid=1462188]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
20ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 340ms |

| 0 / 0 |
