Баферирање на излезот
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Баферирање на излезот
Референца за `outcontrol.output-buffering.php` со подобрена типографија и навигација.
Баферирање на излезот
Баферирањето на излезот е баферирање (привремено складирање) на излезот пред да се исфрли (испрати и отфрли) до прелистувачот (во веб-контекст) или до обвивката (на командната линија). Додека е активно баферирањето на излезот, не се испраќа никаков излез од скриптата, наместо тоа, излезот се складира во внатрешен бафер.
Излезниот бафер (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тагови), или негово целосно отфрлање под одредени услови (на пр. грешки) - пополнување на одредени недостапни функционалности на веб-серверот (на пр. компресирање или кодирање на излезот)