1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
<?xml version="1.0" encoding="iso-8859-2"?>
<!-- EN-Revision: 1.12 Maintainer: slawek Status: ready -->
<!-- $Revision: 1.8 $ -->
<chapter id="features.connection-handling">
<title>Obsuga pocze</title>
<note>
<para>Ten rozdzia dotyczy wersji 3.0.7 i pniejszych.</para>
</note>
<para>
PHP wewntrznie zarzdza stanem poczenia. Mog wystpi
trzy stany:
<itemizedlist>
<listitem><simpara>0 - NORMAL</simpara></listitem>
<listitem><simpara>1 - ABORTED (przerwany)</simpara></listitem>
<listitem><simpara>2 - TIMEOUT (przekroczony czas)</simpara></listitem>
</itemizedlist>
</para>
<simpara>
Kiedy skrypt PHP si wykonuje, aktywny jest stan NORMAL.
Jeli klient si rozczy, stan przechodzi w ABORTED.
Zwykle ma to miejsce gdy uytkownik nacinie przycisk STOP w
przegldarce. Jeli przekroczony zostanie narzucony limit czasu
(patrz <function>set_time_limit</function>), stan zmienia si
na TIMEOUT.
</simpara>
<simpara>
Moesz zdecydowa czy po rozczeniu klienta praca skryptu ma zosta
przerwana. Czasem przydatne jest by skrypty dziaay do koca, nawet
gdy braknie przegldarki do ktrej mona wysya dane. Domylnie,
po rozczeniu si klienta, dziaanie skryptu jest przerywane. To
zachowanie mona zmieni dziki opcji ignore_user_abort w php.ini, jak
rwnie dyrektywie Apache "php_value ignore_user_abort" lub funkcji
<function>ignore_user_abort</function>. Jeli nie kaesz PHP ignorowa
rozcze klienta, a klient rozczy si, skrypt zakoczy dziaanie.
Jedyny wyjtek wystpi, jeli zarejestrujesz funkcj zamykajc, uywajc
<function>register_shutdown_function</function>. Wtedy, gdy uytkownik
wcinie przycisk STOP i przy kolejnej prbie wysania wyniku PHP
wykryje przerwanie poczenia, zostanie wykonana funkcja zamykajca.
Bdzie ona rwnie wywoywana przy normalnym zakoczeniu pracy skryptu,
zatem, by wykona inne czynnoci gdy klient si rozczy, mona
uy funkcji <function>connection_aborted</function>. Zwraca ona
&true; jeli poczenie zostao przerwane.
</simpara>
<simpara>
Skrypt moe zosta rwnie zakoczony przez wbudowany licznik czasu.
Domylnie czas ten wynosi 30 sekund. Warto t mona zmieni
uywajc opcji max_execution_time w php.ini, jak rwnie dyrektywy
Apache "php_value max_execution_time" lub funkcji
<function>set_time_limit</function>. Kiedy czas na wykonanie si
skoczy, skrypt zostanie przerwany podobnie jak w przypadku rozczenia
si klienta (patrz wyej). Jeli funkcja zamykajca bya zarejestrowana,
zostanie wywoana. Wewntrz funkcji zamykajcej moesz sprawdzi czy
zostaa ona wywoana wskutek przekroczenia czasu. Do tego celu uyj
funkcji <function>connection_timeout</function>, ktra zwrci &true;
jeli to przekroczenie limitu czasu spowodowao wywoanie funkcji
zamykajcej.
</simpara>
<simpara>
Naley zwrci uwag, e stany ABORTED i TIMEOUT mog by aktywne
jednoczenie. Jest to moliwe, jeli kaesz PHP ignorowa rozczenia
klienta. PHP bdzie brao pod uwag fakt, e poczenie z klientem
mogo zosta zerwane, ale skrypt bdzie pracowa dalej. Gdy minie czas
przeznaczony na wykonanie skryptu, zostanie on przerwany i uruchomiona
zostanie funkcja zamykajca (jeli bya ustawiona). W tym momencie funkcje
<function>connection_timeout</function> i
<function>connection_aborted</function> bd zwracay &true;. Moesz
take sprawdzi oba stany przy pomocy funkcji
<function>connection_status</function>. Zwrci ona aktywne stany
ustawione bitowo. Dla przykadu, jeli oba stany s aktywne, zostanie
zwrcona liczba 3.
</simpara>
</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:"../../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
-->
|