PHP kézikönyv
Előző |  | Következő

# 40. Fejezet. Kapcsolatkezelés

> Megjegyzés: Az alábbi fejezetek csak a PHP 3.0.7-es és későbbi verzióira vonatkoznak!

A PHP futása közben nyilvántartja a kapcsolati státuszt. Három lehetséges állapot van:

- 0 - NORMAL (Normál)

- 1 - ABORTED (Megszakított)

- 2 - TIMEOUT (Időtúllépéses)

Amikor egy PHP szkript fut, alapállapotban a NORMAL állapot aktív. Ha a távoli kliens bontja a kapcsolatot, az ABORTED statátusz jelzése lesz aktív. Ez tipikusan akkor áll elő, ha a látogató a STOP gomb-ot használja a böngészőjében. Ha a PHP által felügyelt időkorált kerül túllépésre (lásd a set_time_limit() függvényt), a TIMEOUT állapot válik aktívvá.

Eldöntheted, hogy ha a kliens bontja a kapcsolatot, a szkript is leálljon-e vagy sem. Néha hasznos lehet, ha a szkriptjeid mindig végigfutnak, annak ellenére, hogy a kliens már nem fogadja a kimenetet. Alapbeállításban azonban a szkript is befejezi a futását, ha a kliens bontja a kapcsolatot. Ez a viselkedés az ignore_user_abort `php.ini` beállítással, valamint az ennek megfelelő "php_value ignore_user_abort" Apache .conf direktívával állítható, vagy az ignore_user_abort() függvénnyel. Ha nem konfigurálod úgy a PHP-t, hogy hagyja figyelmen kívül a kliens kapcsolatbontását, a szkriptjeid le fognak állni ilyen esetekben. Egyetlen kivétel ez alól, ha egy 'shutdown' függvényt definiálsz a register_shutdown_function()-al. Egy ilyen beállítással, ha a látogató lenyomja a STOP gombot, a szkripted következő kimenet-küldési kísérletére a PHP a 'shutdown' függvényt fogja meghívni. A 'shutdown' függvény abban az esetben is meghívásra kerül, ha a szkript normálisan befejezi a futását, tehát ha valami speciálisat szeretnél tenni, amikor a kliens bontja a kapcsolatot, a connection_aborted() függvényt használhatod. Ez igazat fog visszaadni, ha a kapcsolatot a kliens bontotta.

A szkripted a belső időmérés következtében is megállhat. Alapbeállításban egy szkript maximum 30 másodpercig futhat. Ez megváltoztatható a max_execution_time `php.ini` direktívával, illetve a megfelelő php_value max_execution_time Apache .conf beállítással, valamint a set_time_limit() függvénnyel. Amikor ez az idő letelik, a szkript megáll, és ha a fenti esetben említett 'shutdown' függvény definiált, az kerül meghívásra. Az időtúllépés esetét a connection_status() függvényel állapíthatod meg. Ez 2-es értéket fog visszaadni, ha időtúllépés miatt hívódott meg a 'shutdown'.

Fontos megjegyezni, hogy az ABORTED és TIMEOUT állapotok egyszerre is aktívak lehetnek, ha a PHP-ben a kliens kapcsolatbontásának figyelmen kívül hagyását kérted. A PHP tudni fogja, hogy a kliens már bontotta a kapcsolatot, de a szkript futni fog tovább. Ha ráadásul eléri az időkorlátot, a szkript megáll, és a 'shutdown' függvény hívódik meg (ha beállítottál ilyet). Ezen a ponton azt fogod tapasztalni, hogy a connection_status() függvény 3-as értékkel fog visszatérni.

Előző | Tartalom | Következő
Távoli állományok kezelése | Fel | Állandó adatbázis kapcsolatok