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.