Php kimenet pufferelés
Oldal: 1 4
Nyomtató pufferelés PHP elég hasznos dolog, ha tudja, hogyan kell használni. Mondd, hányszor láttad a hiba jellege:
Figyelem: Nem lehet módosítani header információk - headers already sent by (output kezdődött.)
Általában ez történik, ha azt szeretné, hogy küldjön egy cookie-t, vagy a műveletek végrehajtásához, amelyek hozzájárulnak a szállítás, vagy más műveletek elősegíti a küldő fejlécek, mint például a dob egy ülésszak vagy alkalmazás függvényfejlécben vagy hasonlók. Vagy a fájl kódolt Unicode, és a legelején leselkedett BOM - Byte Order Mark. Ez podlyuschaya dolog, nem törhető szóköz nulla szélességű. Nézd a „bájtsorrend” rovat.
Az a lehetőség, pufferelés
Segítségével a kimenet pufferelés, akkor:
- Küldj egy cookie bárhonnan a forgatókönyvet.
- Ahhoz, hogy a munkamenet indításakor bármikor.
- Az adatok tömörítésére, mielőtt elküldené a felhasználónak.
Compression további processzor terhelését, azonban a forgalom, egy oldalon csökken körülbelül negyven százalék, ami azt jelenti, hogy a szerver kevesebb időt küld adatokat a hálózaton keresztül. A tömörítés mértéke számos tényezőtől függ, mint például a tömörített kép rosszabb, mint a szöveg.
Mi történik, ha a puffer?
Ha a kimeneti pufferelés, PHP mechanizmus halmozott minden a script, párhuzamosan alkotnak egy HTTP-csomag - fejlécek, beleértve a fejlécet és hozzátéve, hogy „cookie” és a többiek, hogy kapunk eredménye a forgatókönyvet. Aztán, amikor a forgatókönyvet dolgozott elveszi, és elküldi azt minden az ügyfélnek a megfelelő sorrendben: először a fejlécek, majd a lap - az eredmény a forgatókönyvet.
Hogyan lehet engedélyezni a kimenet pufferelés?
Az első út, ha a szerver a tiéd, vagy nem egyszerűen hozzáférhet a php.ini fájlt (mint írtam fent) keresünk bele output_buffering irányelv és értéket rendelünk On. Ez az átmeneti engedélyezett az összes szkriptet.
A második lehetőség, hogy ob_start () függvény a forgatókönyvet, azt a következtetést, hogy mi kell pufferelt. Ez a módszer előnyös - kapsz egy nagy rugalmasságot / ellenőrzés a munka, valamint a jobb hordozhatóság.
Véleményem nagyon kényelmes, hogy fontolja meg a kimeneti pufferelés formájában bizonyos konténerek - pufferek. Könnyebb megérteni a munkájukat.
Tehát, hogy nyissa egy ilyen konténer - a puffer lehet csak egy funkciót ob_start (). de ez a puffer zárni, akkor két funkciója van: ob_end_flush () és ob_end_clean ()
Bezárja puffert és elküldi az adatokat.
Bezárja puffer nélkül adatokat küld.
Minden tartalom jelenik meg, amikor a puffer lesz nyitott a pufferben, és nem lesz elküldve. Például:
Ez a szkript megjeleníti az eredményt:
Nézzük, hogy mi történt. Létrehoztunk három pufferek. Sorok 1-3 - ez az első. Becsukta ob_end_flush () függvény - a következtetésre látjuk az eredményt.
Második puffer - egy vonal 5-7. Ez van lezárva ob_end_clean () függvény - így a kiadási elvesztette bezsledno.
A harmadik puffer - vonal 9-10. Ő nem zárt semmilyen módon! - Shozanah? - Azt kérdezed. Ez egyszerű - a végén a script, PHP automatikusan lezárja az összes puffer mintha zárva ob_end_flush () függvényt.