© 2013 All rights reserved.
4

PHP: Buffer preload (output buffering)

Občas nastane situace, kdy potřebujeme v PHP udělat například několik složitějších výpočtů, které budou trvat více serverového času, ale budeme chtít postupně uživateli vypisovat hotové informace a ne čekat až na dokončení skriptu. Můžeme si pomoci bufferem v PHP.

Pomocí správného použití bufferu v PHP můžete docílit toho, že budete uživateli vracet z webového serveru do prohlížeče zpracované informace a nebudete muset čekat až se vykoná celý skript, jak je tomu standardně.

Vezměme si například situaci, kdy je ve zdrojovém kódu opravdu složitý výpočet, jehož řešení trvá i několik sekund a tento výpočet se několikrát opakuje.

Pokud by uživatel takovou stránku načítal v prohlížeči, webový server by čekal na dokončení posledního výpočtu, a až potom by poslal výsledek na standardní výstup, tedy do prohlížeče.

Použitím bufferu můžeme vracet výsledek ihned po dokončení, jako je tomu na tomto příkladu, na kterém je použití jasné (pro pochopení situace doporučuji vyzkoušet):

Výsledek v podobě výpisu:

bude vypisován vždy ihned po jeho vypočítání a nebude čekat až na dokončení posledního cyklu.

Comments are closed for this page

Nechces prosim udelat kompletni serial o PHP a MYSQL pro nas amatery .. prehledny s vysvetlenim … nikde na netu to neni a kdyz tak to neni zabezpecene .. uci napr. o pouzivani mysql_fetch_array o ktere se zas jinde pise, ze se nedoporucuje pouzivat 🙁 Pak v tom je hrozny chaoz a my ani nevime co se mame a co se nemame ucit 🙁

Myslim si ze by to bylo zbytecne, protoze serialu o PHP je na celem, i ceskem, internetu opravdu hodne.
Napriklad tva poznamka o mysql_fetch_array:
Existuje vice moznosti jak pristupovat k datum z databaze, a casem prijdes sam na to, kdy je lepsi pouzit to a kdy zase ono.
Funkci pro pristup je vice, od zakladniho mysql_result, prez mysql_fetch_array, ktere samo o sobe ma tri typy vraceni vysledku (MYSQL_ASSOC, MYSQL_NUM, MYSQL_BOTH) az napriklad po mysql_fetch_object.
Sam casem poznas co je kdy lepsi pouzit a vetsinou si zvyknes na jednu z nich, kterou potom s oblibou pouzivas (v mem pripade je to vetsinou mysql_fetch_object).

Amateri jste oba dva, profesionalove uzivaji abstraktni layer nad databazi, aby se pristupovalo k db pres unifikovane API, coz je aktualne v pripade PHP PDO, o kterem samozrejme oba vite asi tolik, kolik ja o vysivani 😀

Tak diky za poznamku.
Moje odpoved se tykala primo jeho dotazu, asi tolik.
A o vysivani neco vim.

About
Hi, i am programmer from the Czech Republic. I love web development (Ruby, Ruby on Rails, PHP, Nette) and iOS development (Objective-C, Cocoa).
To cooperate, here is my phone:
+420 608 836