Баферирање на излезот
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Баферирање на излезот
Референца за `outcontrol.output-buffering.php` со подобрена типографија и навигација.
Баферирање на излезот
Output buffering is the buffering (temporary storage) of output before it is flushed (sent and discarded) to the browser (in a web context) or to the shell (on the command line). While output buffering is active no output is sent from the script, instead the output is stored in an internal buffer.
Излезниот бафер (output buffering) е баферирање (привремено складирање) на излезот пред да биде исфрлен (испратен и отфрлен) до прелистувачот (во веб контекст) или до школката (на командна линија). Додека излезниот бафер е активен, не се испраќа излез од скриптата, наместо тоа, излезот се складира во внатрешен бафер.
Баферирањето влијае на PHP
PHP се потпира на основната софтверска/хардверска инфраструктура при исфрлање на излезот. Баферирањето имплементирано од конзолите на командна линија (на пр. line buffered) или веб серверите и прелистувачите во веб контекст (на пр. fully buffered) влијаат на тоа кога излезот се прикажува на крајниот корисник. Некои од овие ефекти можат да се елиминираат со фино подесување на серверските поставки и/или усогласување на големините на баферите на разните слоеви.
Контрола на излезниот бафер во PHP ob_* PHP обезбедува целосно бафериран кориснички излезен бафер со функции за стартување, манипулирање и исклучување на баферот (повеќето функции), и две функции за исфрлање на основните системски бафери (flush() and ob_implicit_flush()). Дел од оваа функционалност може да се постави и/или конфигурира со соодветните php.ini поставки.
Случаи на употреба
Излезниот бафер е генерално корисен во ситуации кога баферираниот излез се менува или инспектира, или се користи повеќе од еднаш во барање; или кога е посакувано контролирано исфрлање на излезот. Специфични случаи на употреба вклучуваат:
-
кеширање на резултатот од пресметковно/време интензивни скрипти, на пример со генерирање на статични
HTMLpages - повторно користење на генерираниот излез со негово прикажување, зачувување во датотека и/или испраќање по е-пошта
-
исфрлање на
headодHTMLстраница одделно одbodyим овозможува на прелистувачите да вчитуваат надворешни ресурси додека скриптата извршува потенцијално подолги процеси (на пр. пристап до база на податоци/датотека, надворешна мрежна врска). Ова е корисно само акоHTTPстатус кодот не може да се промени откако ќе се испратат заглавјата - извлекување информации од функции кои инаку би произвеле излез (на пр. phpinfo())
-
контролирање на излезот на код од трети страни со менување/користење делови (на пр. извлекување податоци, замена на зборови/фрази, додавање недостасувачки
HTMLтагови), или негово целосно отфрлање под одредени услови (на пр. грешки) - polyfilling certain unavailable web server functionality (e.g. compressing or encoding output)