connection_status în PHP

Returnează starea conexiunii cu vizitatorul: normală, întreruptă sau expirată.

Sintaxă
connection_status(): int

Ce face connection_status

connection_status returnează un număr care se compară cu constantele CONNECTION_NORMAL (0), CONNECTION_ABORTED (1, vizitatorul a închis pagina) și CONNECTION_TIMEOUT (2, s-a depășit timpul maxim). Valorile se pot combina.

PHP observă că vizitatorul a plecat doar când încearcă să îi trimită ceva. De aceea verificarea are sens după echo și flush, în scripturi lungi.

Ce returnează

Starea conexiunii, ca număr.

Exemple

Exemplul 1: Starea în linia de comandă

<?php
var_dump(connection_status() === CONNECTION_NORMAL);

Rezultat

bool(true)

Exemplul 2: Funcție de final care știe de ce s-a oprit scriptul

<?php
register_shutdown_function(function () {
    if (connection_status() & CONNECTION_TIMEOUT) {
        error_log("Exportul a depășit timpul maxim");
    } elseif (connection_status() & CONNECTION_ABORTED) {
        error_log("Vizitatorul a închis pagina");
    }
});

Greșeli frecvente

  • Compari cu == o singură valoare. Stările se pot combina, deci verifică un bit anume cu &.

Comenzi înrudite

  • connection_aborted: Verifică dacă vizitatorul a închis pagina sau a apăsat Stop înainte ca scriptul să termine.
  • ignore_user_abort: Stabilește dacă scriptul continuă să ruleze după ce vizitatorul închide pagina.
  • set_time_limit: Stabilește câte secunde poate rula scriptul înainte să fie oprit.