Co to jest buforowanie wyjścia?

Co to jest buforowanie wyjścia i dlaczego używa się go w PHP?

Author: Trilarion, 2010-05-14

5 answers

Buforowanie wyjściowe dla programistów, Przewodnik dla początkujących :

Bez buforowania wyjściowego (domyślnie), Twój HTML jest wysyłany do przeglądarki w kawałkach, gdy PHP przetwarza Twój skrypt. Dzięki buforowaniu wyjściowemu Twój HTML jest przechowywany w zmiennej i wysyłany do przeglądarki jako jeden kawałek na końcu skryptu.

Zalety buforowania wyjściowego dla web developerów

  • samo włączenie buforowania wyjściowego zmniejsza czas potrzebny na Pobierz i Renderuj nasz HTML, ponieważ nie jest wysyłany do przeglądarki w kawałkach, ponieważ PHP przetwarza HTML.
  • Wszystkie fantazyjne rzeczy, które możemy zrobić z łańcuchami PHP, możemy teraz zrobić z całą naszą stroną HTML jako jedną zmienną.
  • Jeśli kiedykolwiek napotkałeś komunikat "Warning: Cannot modify header information-headers already sent by( output)" podczas ustawiania plików cookie, z przyjemnością dowiesz się, że buforowanie wyjściowe jest twoją odpowiedzią.
 235
Author: ax.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-19 00:44:42

Buforowanie Wyjścia jest używane przez PHP w celu poprawy wydajności i wykonania kilku trików.

  • Możesz mieć PHP przechowywać wszystkie dane wyjściowe w buforze i wypisywać je na raz, poprawiając wydajność sieci.

  • W pewnych sytuacjach można uzyskać dostęp do zawartości bufora bez wysyłania jej z powrotem do przeglądarki.

Rozważ ten przykład:

<?php
    ob_start( );
    phpinfo( );
    $output = ob_get_clean( );
?>

Powyższy przykład przechwytuje dane wyjściowe do zmiennej zamiast wysyłać je do przeglądarka. output_buffering jest domyślnie wyłączone.

  • możesz użyć buforowania wyjściowego w sytuacjach, gdy chcesz zmodyfikować nagłówki po wysłaniu zawartości.

Rozważ ten przykład:

<?php
    ob_start( );
    echo "Hello World";
    if ( $some_error )
    {
        header( "Location: error.php" );
        exit( 0 );
    }
?>
 54
Author: Salman A,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-15 06:39:34

Funkcje sterowania wyjściami pozwalają na aby kontrolować kiedy wyjście jest wysyłane z scenariusz. Może to być przydatne w kilka różnych sytuacji, zwłaszcza jeśli musisz wysłać nagłówki do przeglądarki po skrypcie zaczął wysyłać dane. Wyjście Funkcje sterowania nie wpływają nagłówki wysyłane za pomocą header () lub setcookie (), tylko funkcje takie jak echo () i dane pomiędzy blokami PHP kod.

Http://php.net/manual/en/book.outcontrol.php

Więcej Zasobów:

Buforowanie wyjścia za pomocą PHP

 9
Author: Sarfraz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-14 06:14:06

Jak sama nazwa wskazuje tutaj bufor pamięci służący do zarządzania wyświetlaniem wyniku skryptu.

Oto jeden Bardzo dobry tutorial do tematu

 4
Author: nik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-14 06:19:58
ob_start();  // turns on output buffering
$foo->bar();  // all output goes only to buffer
ob_clean();  // delete the contents of the buffer, but remains buffering active
$foo->render(); // output goes to buffer
ob_flush(); // send buffer output
$none = ob_get_contents();  // buffer content is now an empty string
ob_end_clean();  // turn off output buffering

Bufory mogą być zagnieżdżane, więc gdy jeden bufor jest aktywny, Inna ob_start () aktywuje nowy bufor. Tak więc ob_end_flush () i ob_flush() tak naprawdę nie wysyłają bufora do wyjścia, ale do bufora nadrzędnego. I tylko wtedy, gdy nie ma bufora nadrzędnego, zawartość jest wysyłana do przeglądarki lub terminala.

Ładnie wyjaśnione tutaj: https://phpfashion.com/everything-about-output-buffering-in-php

 0
Author: sudip,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-23 07:20:55