Användarnivå Output Buffertar: Skillnad mellan sidversioner
Admin (diskussion | bidrag) |
Admin (diskussion | bidrag) |
||
(2 mellanliggande sidversioner av samma användare visas inte) | |||
Rad 1: | Rad 1: | ||
== Användar-Nivå Buffertar för Utmatning == | == Användar-Nivå Buffertar för Utmatning == | ||
=== Innehållsförteckning === | === Innehållsförteckning === | ||
* Vad buffras i utmatningen? | * [[Vad buffras i utmatningen?]] | ||
* Nästling av utmatningsbuffertar | * [[Nästling av utmatningsbuffertar]] | ||
* Buffertstorlek | * [[Buffertstorlek]] | ||
* Tillåtna operationer på buffertar | * [[Tillåtna operationer på buffertar]] | ||
* Utmatningshanterare | * [[Utmatningshanterare]] | ||
* Arbete med utmatningshanterare | * [[Arbete med utmatningshanterare]] | ||
* Flaggor som skickas till utmatningshanterare | * [[Flaggor som skickas till utmatningshanterare]] | ||
* Returvärden från utmatningshanterare | * [[Returvärden från utmatningshanterare]] | ||
Utmatningsbuffertar på användarnivå kan startas, manipuleras och avslutas från PHP-kod. Varje buffert inkluderar en utmatningsbuffert och en associerad utmatningshanterarfunktion. | Utmatningsbuffertar på användarnivå kan startas, manipuleras och avslutas från PHP-kod. Varje buffert inkluderar en utmatningsbuffert och en associerad utmatningshanterarfunktion. | ||
=== Aktivera Utmatningsbuffring === | === Aktivera Utmatningsbuffring === | ||
Utmatningsbuffring kan aktiveras med funktionen <code>[[ob_start()]]</code> eller genom att ställa in <code>output_buffering</code> och <code>output_handler</code> i php.ini. Även om båda kan skapa utmatningsbuffertar är <code>ob_start()</code> mer flexibel eftersom den accepterar användardefinierade funktioner som utmatningshanterare och tillåter inställning av vilka operationer som är tillåtna på bufferten (flusha, rensa, ta bort). Buffertar som startas med <code>ob_start()</code> kommer vara aktiva från den rad där funktionen anropas, medan de som startas med <code>output_buffering</code> kommer buffra utmatning från första raden i skriptet. | Utmatningsbuffring kan aktiveras med funktionen <code>[[ob_start()]]</code> eller genom att ställa in <code>output_buffering</code> och <code>output_handler</code> i php.ini. Även om båda kan skapa utmatningsbuffertar är <code>ob_start()</code> mer flexibel eftersom den accepterar användardefinierade funktioner som utmatningshanterare och tillåter inställning av vilka operationer som är tillåtna på bufferten (flusha, rensa, ta bort). Buffertar som startas med <code>[[ob_start()]]</code> kommer vara aktiva från den rad där funktionen anropas, medan de som startas med <code>[[output_buffering]]</code> kommer buffra utmatning från första raden i skriptet. | ||
PHP levereras även med en inbyggd "URL-Rewriter"-utmatningshanterare som startar sin egen utmatningsbuffert och endast tillåter upp till två instanser av den att köra samtidigt (en för användarnivå URL-omskrivning och en för transparent sessions-ID-stöd). Dessa buffertar kan startas genom att anropa <code>output_add_rewrite_var()</code>-funktionen och/eller genom att aktivera <code>session.use_trans_sid</code> i php.ini. | PHP levereras även med en inbyggd "URL-Rewriter"-utmatningshanterare som startar sin egen utmatningsbuffert och endast tillåter upp till två instanser av den att köra samtidigt (en för användarnivå URL-omskrivning och en för transparent sessions-ID-stöd). Dessa buffertar kan startas genom att anropa <code>output_add_rewrite_var()</code>-funktionen och/eller genom att aktivera <code>[[session.use_trans_sid]]</code> i php.ini. | ||
Den inbyggda zlib-modulen har sin egen utmatningsbuffert som kan aktiveras genom att använda inställningen <code>zlib.output_compression</code> i php.ini. | Den inbyggda zlib-modulen har sin egen utmatningsbuffert som kan aktiveras genom att använda inställningen <code>zlib.output_compression</code> i php.ini. | ||
Rad 24: | Rad 24: | ||
Flushning skickar och rensar innehållet i den aktiva bufferten. Utmatningsbuffertar flushas när storleken på utmatningen överstiger buffertens storlek; när skriptet avslutas eller när <code>[[ob_flush()]]</code>, <code>[[ob_end_flush()]]</code> eller <code>[[ob_get_flush()]]</code> anropas. | Flushning skickar och rensar innehållet i den aktiva bufferten. Utmatningsbuffertar flushas när storleken på utmatningen överstiger buffertens storlek; när skriptet avslutas eller när <code>[[ob_flush()]]</code>, <code>[[ob_end_flush()]]</code> eller <code>[[ob_get_flush()]]</code> anropas. | ||
''Varning:'' Anrop av <code>[[ob_end_flush()]]</code> eller <code>[[ob_get_flush()]]</code> kommer att stänga av den aktiva bufferten. | '''''Varning:'' Anrop av <code>[[ob_end_flush()]]</code> eller <code>[[ob_get_flush()]]</code> kommer att stänga av den aktiva bufferten.''' | ||
''Varning:'' Flushning av buffertar kommer att flusha returvärdet från utmatningshanteraren vilket kan skilja sig från innehållet i bufferten. Till exempel, genom att använda <code>[[ob_gzhandler()]]</code> komprimeras utmatningen och flushar den komprimerade utmatningen. | ''Varning:'' Flushning av buffertar kommer att flusha returvärdet från utmatningshanteraren vilket kan skilja sig från innehållet i bufferten. Till exempel, genom att använda <code>[[ob_gzhandler()]]</code> komprimeras utmatningen och flushar den komprimerade utmatningen. | ||
Rad 43: | Rad 43: | ||
Utmatningsbuffertar kan stängas av genom att anropa <code>[[ob_end_clean()]]</code>, <code>[[ob_end_flush()]]</code>, <code>[[ob_get_flush()]]</code> eller <code>[[ob_get_clean()]]</code>. | Utmatningsbuffertar kan stängas av genom att anropa <code>[[ob_end_clean()]]</code>, <code>[[ob_end_flush()]]</code>, <code>[[ob_get_flush()]]</code> eller <code>[[ob_get_clean()]]</code>. | ||
''Varning:'' Utmatningsbuffertar som startats utan flaggan <code>PHP_OUTPUT_HANDLER_REMOVABLE</code> kan inte stängas av och kan generera en E_NOTICE. | '''''Varning:'' Utmatningsbuffertar som startats utan flaggan <code>PHP_OUTPUT_HANDLER_REMOVABLE</code> kan inte stängas av och kan generera en E_NOTICE.''' | ||
Varje utmatningsbuffert som inte har stängts av i slutet av skriptet eller när <code>exit()</code> anropas kommer att flushas och stängas av under PHP:s avstängningsprocess. Buffertarna kommer att flushas och stängas av i omvänd ordning av deras start. Den sist startade bufferten kommer att vara först, och den först startade bufferten kommer att vara sist att flushas och stängas av. | Varje utmatningsbuffert som inte har stängts av i slutet av skriptet eller när <code>[[exit()]]</code> anropas kommer att flushas och stängas av under PHP:s avstängningsprocess. Buffertarna kommer att flushas och stängas av i omvänd ordning av deras start. Den sist startade bufferten kommer att vara först, och den först startade bufferten kommer att vara sist att flushas och stängas av. | ||
''Varning:'' Om flushning av buffertens innehåll inte önskas, bör en anpassad utmatningshanterare användas för att förhindra flushning under avstängning. | ''Varning:'' Om flushning av buffertens innehåll inte önskas, bör en anpassad utmatningshanterare användas för att förhindra flushning under avstängning. | ||
Rad 52: | Rad 52: | ||
Om ett icke fångat undantag slängs i en utmatningshanterare, avslutas programmet och hanteraren anropas av avstängningsprocessen, varefter felmeddelandet "Icke fångat undantag" flushas. | Om ett icke fångat undantag slängs i en utmatningshanterare, avslutas programmet och hanteraren anropas av avstängningsprocessen, varefter felmeddelandet "Icke fångat undantag" flushas. | ||
Om det icke fångade undantaget slängs i en hanterare som anropas av <code>ob_flush()</code>, <code>ob_end_flush()</code> eller <code>ob_get_flush()</code>, flushas buffertens innehåll före felmeddelandet. | Om det icke fångade undantaget slängs i en hanterare som anropas av <code>[[ob_flush()]]</code>, <code>[[ob_end_flush()]]</code> eller <code>[[ob_get_flush()]]</code>, flushas buffertens innehåll före felmeddelandet. | ||
Om ett icke fångat undantag slängs i en utmatningshanterare under avstängning, avslutas hanteraren och varken buffertens innehåll eller felmeddelandet flushas. | Om ett icke fångat undantag slängs i en utmatningshanterare under avstängning, avslutas hanteraren och varken buffertens innehåll eller felmeddelandet flushas. | ||
Rad 61: | Rad 61: | ||
Om ett icke-fatalt fel uppstår i en utmatningshanterare fortsätter programmet att köra. | Om ett icke-fatalt fel uppstår i en utmatningshanterare fortsätter programmet att köra. | ||
Om det icke-fatala felet uppstår i en hanterare som anropas av <code>ob_flush()</code>, <code>ob_end_flush()</code> eller <code>ob_get_flush()</code>, flushas bufferten beroende på returvärdet från hanteraren. Om hanteraren returnerar false flushas både bufferten och felmeddelandet. Om den returnerar något annat flushas hanterarens returvärde men inte felmeddelandet. | Om det icke-fatala felet uppstår i en hanterare som anropas av <code>[[ob_flush()]]</code>, <code>[[ob_end_flush(]])</code> eller <code>[[ob_get_flush()]]</code>, flushas bufferten beroende på returvärdet från hanteraren. Om hanteraren returnerar false flushas både bufferten och felmeddelandet. Om den returnerar något annat flushas hanterarens returvärde men inte felmeddelandet. | ||
''Observera:'' Om en hanterare returnerar false sätts dess statusflagga <code>PHP_OUTPUT_HANDLER_DISABLED</code>. | ''Observera:'' Om en hanterare returnerar false sätts dess statusflagga <code>PHP_OUTPUT_HANDLER_DISABLED</code>. | ||
Rad 67: | Rad 67: | ||
Om ett fatalt fel uppstår i en utmatningshanterare avslutas programmet och hanteraren anropas av avstängningsprocessen, varefter felmeddelandet flushas. | Om ett fatalt fel uppstår i en utmatningshanterare avslutas programmet och hanteraren anropas av avstängningsprocessen, varefter felmeddelandet flushas. | ||
Om det fatala felet uppstår i en hanterare som anropas av <code>ob_flush()</code>, <code>ob_end_flush()</code> eller <code>ob_get_flush()</code>, flushas buffertens innehåll före felmeddelandet. | Om det fatala felet uppstår i en hanterare som anropas av <code>[[ob_flush()]]</code>, <code>[[ob_end_flush()]]</code> eller <code>[[ob_get_flush()]]</code>, flushas buffertens innehåll före felmeddelandet. | ||
Om ett fatalt fel uppstår i en utmatningshanterare under avstängning avslutas programmet utan att flusha bufferten eller felmeddelandet. | Om ett fatalt fel uppstår i en utmatningshanterare under avstängning avslutas programmet utan att flusha bufferten eller felmeddelandet. | ||
=== Utmatning i Utmatningshanterare === | === Utmatning i Utmatningshanterare === | ||
I specifika omständigheter flushas utmatning som produceras i hanteraren tillsammans med innehållet i bufferten. Denna utmatning läggs inte till i bufferten och är inte en del av strängen som returneras av <code>ob_get_flush()</code>. | I specifika omständigheter flushas utmatning som produceras i hanteraren tillsammans med innehållet i bufferten. Denna utmatning läggs inte till i bufferten och är inte en del av strängen som returneras av <code>[[ob_get_flush()]]</code>. | ||
Under flush-operationer (anrop av <code>ob_flush()</code>, <code>ob_end_flush()</code>, <code>ob_get_flush()</code> och under avstängning), om returvärdet från en hanterare är false, flushas innehållet i bufferten följt av utmatningen. Om hanteraren inte anropas under avstängning resulterar slängning av ett undantag eller anrop av <code>exit()</code> i samma beteende. | Under flush-operationer (anrop av <code>[[ob_flush()]]</code>, <code>[[ob_end_flush()]]</code>, <code>[[ob_get_flush()]]</code> och under avstängning), om returvärdet från en hanterare är false, flushas innehållet i bufferten följt av utmatningen. Om hanteraren inte anropas under avstängning resulterar slängning av ett undantag eller anrop av <code>[[exit()]]</code> i samma beteende. | ||
''Observera:'' Om en hanterare returnerar false sätts dess statusflagga <code>PHP_OUTPUT_HANDLER_DISABLED</code>. | ''Observera:'' Om en hanterare returnerar false sätts dess statusflagga <code>PHP_OUTPUT_HANDLER_DISABLED</code>. | ||
=== Statusflaggor för Utmatningshanterare === | === Statusflaggor för Utmatningshanterare === | ||
Hanterarens statusflaggor i buffertens flaggmask sätts varje gång utmatningshanteraren anropas och är en del av flaggorna som returneras av <code>ob_get_status()</code>. Om hanteraren exekveras framgångsrikt och inte returnerar false, sätts <code>PHP_OUTPUT_HANDLER_STARTED</code> och <code>PHP_OUTPUT_HANDLER_PROCESSED</code>. Om hanteraren returnerar false eller slänger ett undantag under exekvering, sätts <code>PHP_OUTPUT_HANDLER_STARTED</code> och <code>PHP_OUTPUT_HANDLER_DISABLED</code>. | Hanterarens statusflaggor i buffertens flaggmask sätts varje gång utmatningshanteraren anropas och är en del av flaggorna som returneras av <code>[[ob_get_status()]]</code>. Om hanteraren exekveras framgångsrikt och inte returnerar false, sätts <code>PHP_OUTPUT_HANDLER_STARTED</code> och <code>PHP_OUTPUT_HANDLER_PROCESSED</code>. Om hanteraren returnerar false eller slänger ett undantag under exekvering, sätts <code>PHP_OUTPUT_HANDLER_STARTED</code> och <code>PHP_OUTPUT_HANDLER_DISABLED</code>. | ||
''Observera:'' Om <code>PHP_OUTPUT_HANDLER_DISABLED</code> är satt för en hanterare kommer hanteraren inte att anropas av <code>ob_end_clean()</code>, <code>ob_end_flush()</code>, <code>ob_get_clean()</code>, <code>ob_get_flush()</code> eller under PHP:s avstängningsprocess. Denna flagga har ingen effekt när <code>ob_clean()</code> eller <code>ob_flush()</code> anropas. | ''Observera:'' Om <code>PHP_OUTPUT_HANDLER_DISABLED</code> är satt för en hanterare kommer hanteraren inte att anropas av <code>[[ob_end_clean()]]</code>, <code>[[ob_end_flush()]]</code>, <code>[[ob_get_clean()]]</code>, <code>[[ob_get_flush()]]</code> eller under PHP:s avstängningsprocess. Denna flagga har ingen effekt när <code>[[ob_clean()]]</code> eller <code>[[ob_flush()]]</code> anropas. | ||
= Sidslut = | |||
Orginalhemsidan på Engelska :https://www.php.net/manual/en/outcontrol.user-level-output-buffers.php | |||
[[PHP]] | |||
[[Funktioner]] | |||
[[Funktionsreferens]] | |||
<HR> | |||
Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på | |||
https://www.linux.se/kontaka-linux-se/ | |||
<BR><BR>Tack till [https://datorhjalp.se Datorhjälp] som har sponsrat [https://www.linux.se Linux.se] med webserver. | |||
[[Kategori:Php]] | |||
[[Kategori:Utmatningskontroll]] |
Nuvarande version från 12 oktober 2024 kl. 05.32
Användar-Nivå Buffertar för Utmatning
Innehållsförteckning
- Vad buffras i utmatningen?
- Nästling av utmatningsbuffertar
- Buffertstorlek
- Tillåtna operationer på buffertar
- Utmatningshanterare
- Arbete med utmatningshanterare
- Flaggor som skickas till utmatningshanterare
- Returvärden från utmatningshanterare
Utmatningsbuffertar på användarnivå kan startas, manipuleras och avslutas från PHP-kod. Varje buffert inkluderar en utmatningsbuffert och en associerad utmatningshanterarfunktion.
Aktivera Utmatningsbuffring
Utmatningsbuffring kan aktiveras med funktionen ob_start()
eller genom att ställa in output_buffering
och output_handler
i php.ini. Även om båda kan skapa utmatningsbuffertar är ob_start()
mer flexibel eftersom den accepterar användardefinierade funktioner som utmatningshanterare och tillåter inställning av vilka operationer som är tillåtna på bufferten (flusha, rensa, ta bort). Buffertar som startas med ob_start()
kommer vara aktiva från den rad där funktionen anropas, medan de som startas med output_buffering
kommer buffra utmatning från första raden i skriptet.
PHP levereras även med en inbyggd "URL-Rewriter"-utmatningshanterare som startar sin egen utmatningsbuffert och endast tillåter upp till två instanser av den att köra samtidigt (en för användarnivå URL-omskrivning och en för transparent sessions-ID-stöd). Dessa buffertar kan startas genom att anropa output_add_rewrite_var()
-funktionen och/eller genom att aktivera session.use_trans_sid
i php.ini.
Den inbyggda zlib-modulen har sin egen utmatningsbuffert som kan aktiveras genom att använda inställningen zlib.output_compression
i php.ini.
Observera: Även om "URL-Rewriter" är speciell i den meningen att den endast tillåter upp till två instanser samtidigt, använder alla utmatningsbuffertar på användarnivå samma underliggande buffertar som används av ob_start()
med sin funktionalitet implementerad av en anpassad utmatningshanterarfunktion. Således kan all dess funktionalitet emuleras av användarkod.
Flusha, Åtkomst till och Rensa Buffertinnehåll
Flushning skickar och rensar innehållet i den aktiva bufferten. Utmatningsbuffertar flushas när storleken på utmatningen överstiger buffertens storlek; när skriptet avslutas eller när ob_flush()
, ob_end_flush()
eller ob_get_flush()
anropas.
Varning: Anrop av ob_end_flush()
eller ob_get_flush()
kommer att stänga av den aktiva bufferten.
Varning: Flushning av buffertar kommer att flusha returvärdet från utmatningshanteraren vilket kan skilja sig från innehållet i bufferten. Till exempel, genom att använda ob_gzhandler()
komprimeras utmatningen och flushar den komprimerade utmatningen.
Innehållet i den aktiva bufferten kan hämtas genom att anropa ob_get_contents()
, ob_get_clean()
eller ob_get_flush()
.
Om endast längden på buffertens innehåll behövs, kommer ob_get_length()
eller ob_get_status()
att returnera längden på innehållet i bytes.
Varning:
Anrop av ob_get_clean()
eller ob_get_flush()
kommer att stänga av den aktiva bufferten efter att ha returnerat dess innehåll.
Innehållet i den aktiva bufferten kan rensas genom att anropa ob_clean()
, ob_end_clean()
eller ob_get_clean()
.
Varning: Anrop av ob_end_clean()
eller ob_get_clean()
kommer att stänga av den aktiva bufferten.
Stänga Av Buffertar
Utmatningsbuffertar kan stängas av genom att anropa ob_end_clean()
, ob_end_flush()
, ob_get_flush()
eller ob_get_clean()
.
Varning: Utmatningsbuffertar som startats utan flaggan PHP_OUTPUT_HANDLER_REMOVABLE
kan inte stängas av och kan generera en E_NOTICE.
Varje utmatningsbuffert som inte har stängts av i slutet av skriptet eller när exit()
anropas kommer att flushas och stängas av under PHP:s avstängningsprocess. Buffertarna kommer att flushas och stängas av i omvänd ordning av deras start. Den sist startade bufferten kommer att vara först, och den först startade bufferten kommer att vara sist att flushas och stängas av.
Varning: Om flushning av buffertens innehåll inte önskas, bör en anpassad utmatningshanterare användas för att förhindra flushning under avstängning.
Undantag som Slängs i Utmatningshanterare
Om ett icke fångat undantag slängs i en utmatningshanterare, avslutas programmet och hanteraren anropas av avstängningsprocessen, varefter felmeddelandet "Icke fångat undantag" flushas.
Om det icke fångade undantaget slängs i en hanterare som anropas av ob_flush()
, ob_end_flush()
eller ob_get_flush()
, flushas buffertens innehåll före felmeddelandet.
Om ett icke fångat undantag slängs i en utmatningshanterare under avstängning, avslutas hanteraren och varken buffertens innehåll eller felmeddelandet flushas.
Observera: Om en hanterare slänger ett undantag sätts dess statusflagga PHP_OUTPUT_HANDLER_DISABLED
.
Fel som Uppstår i Utmatningshanterare
Om ett icke-fatalt fel uppstår i en utmatningshanterare fortsätter programmet att köra.
Om det icke-fatala felet uppstår i en hanterare som anropas av ob_flush()
, ob_end_flush()
eller ob_get_flush()
, flushas bufferten beroende på returvärdet från hanteraren. Om hanteraren returnerar false flushas både bufferten och felmeddelandet. Om den returnerar något annat flushas hanterarens returvärde men inte felmeddelandet.
Observera: Om en hanterare returnerar false sätts dess statusflagga PHP_OUTPUT_HANDLER_DISABLED
.
Om ett fatalt fel uppstår i en utmatningshanterare avslutas programmet och hanteraren anropas av avstängningsprocessen, varefter felmeddelandet flushas.
Om det fatala felet uppstår i en hanterare som anropas av ob_flush()
, ob_end_flush()
eller ob_get_flush()
, flushas buffertens innehåll före felmeddelandet.
Om ett fatalt fel uppstår i en utmatningshanterare under avstängning avslutas programmet utan att flusha bufferten eller felmeddelandet.
Utmatning i Utmatningshanterare
I specifika omständigheter flushas utmatning som produceras i hanteraren tillsammans med innehållet i bufferten. Denna utmatning läggs inte till i bufferten och är inte en del av strängen som returneras av ob_get_flush()
.
Under flush-operationer (anrop av ob_flush()
, ob_end_flush()
, ob_get_flush()
och under avstängning), om returvärdet från en hanterare är false, flushas innehållet i bufferten följt av utmatningen. Om hanteraren inte anropas under avstängning resulterar slängning av ett undantag eller anrop av exit()
i samma beteende.
Observera: Om en hanterare returnerar false sätts dess statusflagga PHP_OUTPUT_HANDLER_DISABLED
.
Statusflaggor för Utmatningshanterare
Hanterarens statusflaggor i buffertens flaggmask sätts varje gång utmatningshanteraren anropas och är en del av flaggorna som returneras av ob_get_status()
. Om hanteraren exekveras framgångsrikt och inte returnerar false, sätts PHP_OUTPUT_HANDLER_STARTED
och PHP_OUTPUT_HANDLER_PROCESSED
. Om hanteraren returnerar false eller slänger ett undantag under exekvering, sätts PHP_OUTPUT_HANDLER_STARTED
och PHP_OUTPUT_HANDLER_DISABLED
.
Observera: Om PHP_OUTPUT_HANDLER_DISABLED
är satt för en hanterare kommer hanteraren inte att anropas av ob_end_clean()
, ob_end_flush()
, ob_get_clean()
, ob_get_flush()
eller under PHP:s avstängningsprocess. Denna flagga har ingen effekt när ob_clean()
eller ob_flush()
anropas.
Sidslut
Orginalhemsidan på Engelska :https://www.php.net/manual/en/outcontrol.user-level-output-buffers.php
PHP Funktioner Funktionsreferens
Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorhjälp som har sponsrat Linux.se med webserver.