Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add translations: reference/outcontrol (draft) #189

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
161 changes: 161 additions & 0 deletions reference/outcontrol/flushing-system-buffers.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 7ad99aeafea66a1562f668aa3cb11dcc9d9cb951 Maintainer: samesch Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="outcontrol.flushing-system-buffers" xmlns="http://docbook.org/ns/docbook">
<title>Leeren (senden) der Systempuffer</title>
<para>
PHP bietet zwei Möglichkeiten, die Systempuffer zu leeren (den Inhalt zu
senden und zu löschen):
Durch den Aufruf von <function>flush</function> und durch die Aktivierung des
impliziten Leerens mittels <function>ob_implicit_flush</function> oder der
&php.ini;-Direktive <link linkend="ini.implicit-flush">implicit_flush</link>.
</para>

<section>
<title>Verhalten beim Leeren des Ausgabepuffers</title>
<para>
Wenn das implizite Leeren des Ausgabepuffers deaktiviert ist, leert ihn PHP
nur dann, wenn <function>flush</function> aufgerufen wird oder wenn das
Skript endet.
</para>
<para>
Wenn das implizite Leeren des Ausgabepuffers aktiviert ist, versucht PHP ihn
nach jedem Codeblock, der zu einer Ausgabe führt, zu leeren.
Ausgabe sind in diesem Zusammenhang Daten mit einer Länge ungleich Null:
<itemizedlist xml:id="outputcontrol.what-is-output">
<listitem>
<simpara>
außerhalb der Tags <literal>&#60;?php ?&#62;</literal>
</simpara>
</listitem>
<listitem>
<simpara>
die von Sprachkonstrukten und Funktionen ausgegeben werden, deren
ausdrücklicher Zweck es ist, vom Benutzer bereitgestellte Variablen oder
Zeichenketten auszugeben, &zb; <function>echo</function>,
<function>print</function>, <function>printf</function>,
<function>var_dump</function>, <function>var_export</function>,
<function>vprintf</function>
</simpara>
</listitem>
<listitem>
<simpara>
die von Funktionen ausgegeben werden, deren Zweck es ist,
Daten/Informationen über das laufende Skript oder PHP zu sammeln und
auszugeben, &zb; <function>debug_print_backtrace</function>,
<function>phpcredits</function>, <function>phpinfo</function>,
<methodname>ReflectionExtension::info</methodname>
</simpara>
</listitem>
<listitem>
<simpara>
die von PHP bei einer nicht abgefangenen Exception oder einem nicht
behandelten Fehler ausgegeben werden (abhängig von den Einstellungen von
<link linkend="ini.display-errors">display_errors</link> und
<link linkend="ini.error-reporting">error_reporting</link>)
</simpara>
</listitem>
<listitem>
<simpara>
alles, was auf <literal>php://output</literal> geschrieben wird
</simpara>
</listitem>
</itemizedlist>
</para>
<note>
<simpara>
Die Ausgabe leerer Zeichenketten und das Senden von Headern werden nicht
als Ausgabe betrachtet und führt nicht zu einem Leeren des Puffers.
</simpara>
</note>
<warning>
<simpara>
Wenn das implizite Leeren aktiviert ist, führen auch Steuerzeichen (&zb;
<literal>"\n"</literal>, <literal>"\r"</literal>, <literal>"\0"</literal>)
zum Leeren.
</simpara>
</warning>
</section>

<section>
<title>Einschränkungen</title>
<para>
Mit dieser Funktionalität können die Ausgabepuffer der Benutzerebene nicht
geleert werden. Um diese zusammen mit den Systempuffern zu verwenden, müssen
die Ausgabepuffer der Benutzerebene vor den Systempuffern geleert werden,
damit PHP überhaupt eine Ausgabe erzeugen kann.
</para>
<warning>
<simpara>
Wenn die Funktion <function>flush</function> aufgerufen wird oder
implizites Leeren aktiviert ist, besteht die Gefahr, dass die
Ausgabehandler von Ausgabepuffern auf Benutzerebene, die Header in einem
Web-Kontext setzen und senden (&zb; <function>ob_gzhandler</function>),
gestört werden, indem die Header gesendet werden, bevor diese Handler dies
tun können.
</simpara>
</warning>
<para>
Die von der zugrundeliegenden Software/Hardware implementierte Pufferung
kann von PHP nicht außer Kraft gesetzt werden und sollte bei der Arbeit mit
den PHP-Funktionen zur Pufferungssteuerung berücksichtigt werden.
Die Überprüfung der Pufferungseinstellungen des Webservers, des Browsers und
der Konsole und die Beschäftigung damit kann mögliche Probleme verringern.
Bei der Arbeit in einem Web-Kontext können entweder die
Pufferungseinstellungen des Webservers oder die Pufferung des Skripts so
angepasst werden, dass sie zusammenarbeiten, während die
Pufferungsstrategien der verschiedenen Browser umgangen werden können, indem
die Pufferung im PHP-Skript angepasst wird.
Auf Konsolen, die eine Zeilenpufferung implementieren, könnten vor dem
Leeren der Ausgabe an den entsprechenden Stellen Zeilenumbrüche eingefügt
werden.
</para>
</section>

<section>
<title>Unterschiede zwischen den <acronym>SAPI</acronym>s beim Leeren</title>
<para>
Obwohl das Leeren der Puffer von jeder <acronym>SAPI</acronym> auf eine
etwas andere Weise implementiert wird, fallen diese Implementierungen in
eine von zwei Kategorien:
<itemizedlist>
<listitem>
<simpara>
<acronym>SAPI</acronym>s, die in einem Web-Kontext verwendet werden,
leeren zuerst die Header und dann die Ausgabe;
<literal>Apache2Handler</literal>, <literal>CGI</literal>
<literal>FastCGI</literal> und <literal>FPM</literal> sind solche
<acronym>SAPI</acronym>s.
</simpara>
</listitem>
<listitem>
<simpara>
andere <acronym>SAPI</acronym>s wie <literal>CLI</literal> und
<literal>embed</literal> leeren nur die Ausgabe
</simpara>
</listitem>
</itemizedlist>
</para>
</section>

</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
128 changes: 128 additions & 0 deletions reference/outcontrol/functions/ob-get-clean.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 86b976d5afaf037868174fe5c242e886eb69baa4 Maintainer: samesch Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.ob-get-clean" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>ob_get_clean</refname>
<refpurpose>Ruft den Inhalt des aktiven Ausgabepuffers ab und deaktiviert ihn</refpurpose>
</refnamediv>

<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>string</type><type>false</type></type><methodname>ob_get_clean</methodname>
<void/>
</methodsynopsis>
<para>
Diese Funktion ruft den Ausgabe-Handler auf (mit den Flags
<constant>PHP_OUTPUT_HANDLER_CLEAN</constant> und
<constant>PHP_OUTPUT_HANDLER_FINAL</constant>), verwirft dessen
Rückgabewert, gibt den Inhalt des aktiven Ausgabepuffers zurück und schaltet
den aktiven Ausgabepuffer ab.
</para>
<para>
<function>ob_get_clean</function> schlägt fehl, wenn der aktive
Ausgabepuffer ohne das Flag
<constant>PHP_OUTPUT_HANDLER_REMOVABLE</constant> gestartet wurde.
</para>
<para>
<function>ob_get_clean</function> entfernt den Inhalt des aktiven
Ausgabepuffers auch dann, wenn er ohne das Flag
<constant>PHP_OUTPUT_HANDLER_CLEANABLE</constant> gestartet wurde.
</para>
</refsect1>

<refsect1 role="parameters">
&reftitle.parameters;
&no.function.parameters;
</refsect1>

<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Gibt bei Erfolg den Inhalt des aktiven Ausgabepuffers zurück oder &false;
bei einem Fehler.
</para>
<caution>
<simpara>
Wenn es keinen aktiven Ausgabepuffer gibt, gibt
<function>ob_get_clean</function> false zurück, erzeugt aber keine Meldung
der Stufe <constant>E_NOTICE</constant>.
</simpara>
</caution>
</refsect1>

<refsect1 role="errors">
&reftitle.errors;
<para>
Wenn die Funktion fehlschlägt, erzeugt sie ein <constant>E_NOTICE</constant>.
</para>
</refsect1>

<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Ein einfaches <function>ob_get_clean</function>-Beispiel</title>
<programlisting role="php">
<![CDATA[
<?php

ob_start();

echo "Hello World";

$out = ob_get_clean();
$out = strtolower($out);

var_dump($out);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[

string(11) "hello world"

]]>
</screen>
</example>
</para>
</refsect1>

<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>ob_start</function></member>
<member><function>ob_get_contents</function></member>
<member><function>ob_clean</function></member>
<member><function>ob_end_clean</function></member>
<member><function>ob_get_flush</function></member>
</simplelist>
</para>
</refsect1>

</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
Loading