Forum und email
Funkce pro řízení výstupu

CXIV. Funkce pro řízení výstupu

Úvod

Funkce pro řízení výstupu vám umožňují ovládat, kdy se odešle výstup skriptu. To může být užitečné v několika různých situacích, zvláště pokud potřebujete poslat browseru hlavičky poté, co váš skript začal odesílat data. Output Control funkce neovlivňují hlavičky odeslané pomocí funkcí header() nebo setcookie(), pouze funkce jako echo() a data mezi bloky PHP kódu.

Požadavky

Tyto funkce jsou k dispozici jako součást standardního modulu, který je vždy dostupný.

Instalace

K používání těchto funkcí není třeba žádná instalace, jsou součástí jádra PHP.

Konfigurace běhu

Chování těchto funkcí je ovlivněno nastavením parametrů v php.ini.

Tabulka 1. Konfigurační volby řízení výstupu

NázevVýchozí hodnotaLze změnit
output_buffering"0"PHP_INI_PERDIR|PHP_INI_SYSTEM
output_handlerNULLPHP_INI_PERDIR|PHP_INI_SYSTEM
implicit_flush"0"PHP_INI_PERDIR|PHP_INI_SYSTEM
Pro bližší podrobnosti a definici PHP_INI_* konstant viz ini_set().

Zde je stručný popis konfiguračních direktiv.

output_buffering boolean/integer

Řízení výstupu můžete povolit pro všechny soubory nastavením této direktivy na 'On'. Pokud chcete omezit velikost bufferu na určitou hodnotu, můžete jako hodnotu této direktivy místo 'On' použít maximální počet bytů (např. output_buffering=4096).

output_handler string

Celý výstup vašich skriptů můžete přesměrovat do funkce. Například pokud nastavíte output_handler na mb_output_handler(), kódování znaků bude transparentně překódováno do zadaného kódování. Nastavení jakékoliv funkce automaticky zapne řízení výstupu.

Poznámka: Nemůžete používat najednou mb_output_handler() s ob_inconv_handler() a nemůžete používat najednou ob_gzhandler() a zlib.output_compression.

implicit_flush boolean

Ve výchozí nastavení je FALSE. Změna na TRUE oznámí PHP, aby oznámilo výstupní vrstvě, aby se automaticky vyprázdnila po každém vypsaném bloku. Je to ekvivalentní volání PHP funkce flush() po každém zavolání funkce print() nebo echo() a po každém HTML bloku.

Když se PHP používá v prostředí webu, zapnutí této volby má závažné výkonnostní důsledky a obecně se doporučuje ho používat pouze pro ladění. Tato hodnota má výchozí nastavení TRUE pokud pracujete pod CLI SAPI.

Viz také ob_implicit_flush().

Typy prostředků

Toto rozšíření nemá definován žádný typ prostředku (resource).

Předdefinované konstanty

Toto rozšíření nemá definovány žádné konstanty.

Příklady

Příklad 1. Ukázka řízení výstupu

<?php

ob_start
();
echo
"Ahoj\n";

setcookie ("cookiename", "cookiedata");

ob_end_flush();

?>

Ve výše uvedené ukázce se výstup z echo() uloží ve výstupním bufferu až do volání ob_end_flush(). Mezitím volání setcookie() úspěšně uložilo cookie bez vyvolání chyby. (Normálně nemůžete odeslat do browseru hlavičky poté, co už byla odeslána data.)

Poznámka: Při přechodu z PHP 4.1 (a 4.2) na 4.3 musíte kvůli chybě ve starších verzích zaručit, aby v php.ini byla direktiva implict_flush nastavena na OFF, jinak výstup po zavolání funkce ob_start() nebude skryt z výstupu.

Obsah
flush -- Odeslat výstupní buffer
ob_clean --  Clean (erase) the output buffer
ob_end_clean --  Vyčistit (vymazat) výstupní buffer a vypnout bufferování výstupu
ob_end_flush --  Vyprázdnit (odeslat) výstupní buffer a vypnout bufferování výstupu
ob_flush --  Flush (send) the output buffer
ob_get_clean --  Get current buffer contents and delete current output buffer
ob_get_contents -- Vrátit obsah výstupního bufferu
ob_get_flush --  Flush the output buffer, return it as a string and turn off output buffering
ob_get_length -- Vrátit délku výstupního buffer
ob_get_level --  Return the nesting level of the output buffering mechanism
ob_get_status --  Get status of output buffers
ob_gzhandler --  ob_start callback function to gzip output buffer
ob_implicit_flush -- Vypnout/zapnout implicitní flush
ob_list_handlers --  List all output handlers in use
ob_start -- Zapnout bufferování výstupu
output_add_rewrite_var --  Add URL rewriter values
output_reset_rewrite_vars --  Reset URL rewriter values