Anslutningshantering

Från Wiki.linux.se
Version från den 3 september 2024 kl. 14.15 av Admin (diskussion | bidrag) (→‎Sidslut)
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

Hantering av anslutningar

Internt i PHP underhålls en anslutningsstatus. Det finns 4 möjliga tillstånd:

  • 0 - NORMAL
  • 1 - AVBRUTEN
  • 2 - TIMEOUT
  • 3 - AVBRUTEN och TIMEOUT

När ett PHP-skript körs normalt är tillståndet NORMAL aktivt. Om den fjärranslutna klienten kopplar från, sätts tillståndet AVBRUTEN på. En fjärrklients frånkoppling orsakas vanligtvis av att användare trycker på deras STOPP-knapp. Om den tidsgräns som PHP pålagt (se set_time_limit()) uppnås, sätts tillståndet TIMEOUT på.

Du kan bestämma om du vill att en klientfrånkoppling ska orsaka att ditt skript avbryts eller inte. Ibland är det praktiskt att alltid låta dina skript köra till slut även om det inte finns någon fjärrwebbläsare som tar emot utdatan. Standardbeteendet är dock att ditt skript avbryts när den fjärranslutna klienten kopplar från. Detta beteende kan ställas in via php.ini-direktivet ignore_user_abort samt genom motsvarande php_value ignore_user_abort i Apache httpd.conf-direktivet eller med funktionen ignore_user_abort(). Om du inte talar om för PHP att ignorera ett användaravbrott och användaren avbryter, kommer ditt skript att avslutas. Det enda undantaget är om du har registrerat en avstängningsfunktion med register_shutdown_function(). Med en avstängningsfunktion, när den fjärranslutna användaren trycker på sin STOPP-knapp, kommer PHP nästa gång ditt skript försöker skicka ut något att upptäcka att anslutningen har avbrutits och avstängningsfunktionen kallas. Denna avstängningsfunktion kommer också att kallas vid slutet av ditt skript som avslutas normalt, så för att göra något annorlunda i händelse av en klientfrånkoppling kan du använda funktionen connection_aborted(). Denna funktion kommer att returnera true om anslutningen avbröts.

Ditt skript kan också avslutas av den inbyggda skripttimern. Standardtidsgränsen är 30 sekunder. Den kan ändras med hjälp av max_execution_time i php.ini-direktivet eller det motsvarande php_value max_execution_time i Apache httpd.conf-direktivet samt med funktionen set_time_limit(). När timern löper ut kommer skriptet att avbrytas och som med ovanstående fall av klientfrånkoppling, om en avstängningsfunktion har registrerats, kommer den att kallas. Inom denna avstängningsfunktion kan du kontrollera om en timeout orsakade att avstängningsfunktionen kallades genom att ringa till funktionen connection_status(). Denna funktion kommer att returnera 2 om en timeout orsakade att avstängningsfunktionen kallades.

En sak att notera är att både tillstånden AVBRUTEN och TIMEOUT kan vara aktiva samtidigt. Detta är möjligt om du berättar för PHP att ignorera användaravbrott. PHP kommer fortfarande att notera det faktum att en användare kan ha brutit anslutningen, men skriptet kommer att fortsätta köra. Om det sedan når tidsgränsen kommer det att avbrytas och din avstängningsfunktion, om någon, kommer att kallas. Vid denna tidpunkt kommer du att upptäcka att connection_status() returnerar 3.


Sidslut

Orginalhemsidan på Engelska :https://www.php.net/manual/en/features.connection-handling.php

PHP
Funktioner


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.se som har sponsrat Linux.se med webserver.