File: persistent-connections.xml

package info (click to toggle)
phpdoc 20020310-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 35,272 kB
  • ctags: 354
  • sloc: xml: 799,767; php: 1,395; cpp: 500; makefile: 200; sh: 140; awk: 51
file content (120 lines) | stat: -rw-r--r-- 5,728 bytes parent folder | download
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?xml version="1.0" encoding="iso-8859-2"?>
<!-- EN-Revision: 1.14 Maintainer: slawek Status: ready -->
<!-- $Revision: 1.7 $ -->
 <chapter id="features.persistent-connections">
  <title>Stae poczenia z bazami danych</title>

  <simpara>
   Stae poczenia (persistent connections) to poczenia, ktre nie s
   zamykane po wykonaniu skryptu. Kiedy skrypt prbuje nawiza stae
   poczenie, PHP sprawdza czy istnieje ju identyczne poczenie (otwarte
   wczeniej) i jeli istnieje, uywa go. Jeeli nie, tworzone
   jest nowe. Poczenie 'identyczne' to poczenie z tym samym hostem,
   z tak sam nazw uytkownika i hasem.
  </simpara>
  <simpara>
   Ludzie niezbyt dobrze znajcy zasady dziaania serwerw mog czasem
   bra stae poczenia za co, czym te nie s. Stae poczenia
   <emphasis>nie</emphasis> stwarzaj moliwoci otwarcia poczenia dla
   konkretnego uytkonika, <emphasis>nie</emphasis> pozwalaj na skuteczne
   stworzenie systemu transakcji, i nie robi wielu innych rzeczy.
   Powiedzmy to jasno, stae poczenia nie oferuj <emphasis>nic</emphasis>
   ponad to, co robi 'zwyke' poczenia.
  </simpara>
  <simpara>
   Dlaczego?
  </simpara> 
  <simpara>
   Jest to zwizane z zasad dziaania serwerw. S trzy sposoby na
   ktre serwer moe wykorzystac PHP do generowania stron.
  </simpara>
  <simpara>
   Pierwsza metoda to wykorzystanie PHP jako "wrappera" CGI. Przy wywoaniu
   skryptu kadorazowo uruchamiany i niszczony jest egzamplarz PHP. Jako, e
   jest on niszczony po kadym wywoaniu, wszystkie zasoby przez niego
   posiadane (na przykad poczenia z baz danych) s tracone. W tym przypadku
   uywanie staych pocze nie przynosi korzyci, one po prostu nie s stae.
  </simpara>
  <simpara>
   Druga, najpopularniejsza metoda, to uruchomienie PHP jako moduu
   w wieloprocesowym serwerze, co obecnie dotyczy jedynie serwera Apache.
   Serwer wieloprocesowy zwykle uruchamia jeden proces (rodzica), ktry
   koordynuje inne procesy (potomne) zajmujce si dostarczaniem stron.
   Kiedy nadchodzi danie od klienta, jest ono przekazywane jednemu z
   procesw potomnych, ktry w danym momencie nie obsuguje innego klienta.
   Oznacza to, e gdy ten sam klient wyle do serwera kolejne danie, moe
   zosta obsuony przez inny proces ni za pierwszym razem. Stae poczenie
   w tym przypadku oznacza, e kady proces potomny ustanawia poczenie
   z serwerem SQL przy pierwszym wywoaniu strony, ktra takiego poczenia
   uywa. Jeli inna strona potrzebuje poczenia z serwerem SQL, moe
   wykorzysta poczenie, ktre dany proces ustanowi wczeniej.
  </simpara>
  <simpara>
   Ustatnia metoda to wykorzystanie PHP jako wtyczki (plug-in) do
   serwera wielowtkowego. Obecnie PHP4 zawiera obsug mechanizmw
   ISAPI, WSAPI i NSAPI (w Windows), ktre umoliwiaj uruchomienie PHP
   jako wtyczki do wielowtkowych serwerw takich jak Netscape FastTrack
   (iPlanet), Microsoft Internet Information Server (IIS) i O'Reilly WebSite
   Pro. Zachowanie PHP jest zasadniczo takie samo jak w przypadku opisanego
   wczeniej modelu wieloprocesowego. Mechanizmy SAPI nie s obsugiwane
   przez PHP 3.
  </simpara>
  <simpara>
   Skoro stae poczenia nie dostarczaj wikszej funkcjonalnoci, do czego
   mog by przydatne?
  </simpara>
  <simpara>
   Odpowied jest niezwykle prosta -- wydajno. Stae poczenia
   sprawdzaj si w przypadku, gdy koszt nawizania poczenia z SQL
   serwerem jest wysoki. To czy koszt jest duy czy nie zaley od wielu
   czynnikw. Na przykad od typu bazy danych, od tego czy znajduje si
   ona na tym samym serwerze, od obcienia maszyny, ktra obsuguje serwer
   SQL, itd. Jeli zatem koszt poczenia jest wysoki, stae poczenia
   znacznie pomagaj. Sprawiaj, e proces potomny czy si z serwerem SQL
   tylko raz podczas swojego ycia, zamiast otwiera poczenie za kadym
   razem gdy zada tego skrypt. Oznacza to, e kady proces potomny, ktry
   nawiza stae poczenie, bdzie posiada wasne poczenie z serwerem
   bazy danych. Dla przykadu, jeeli 20 procesw potomnych uruchomi skrypt,
   ktry ustanowi stae poczenie z serwerem SQL, bdziesz mie 20 rnych
   pocze z serwerem, jedno na kady proces.
  </simpara>
  <simpara>
   Trzeba jednak zauway, e moe to mie swoje ujemne strony w przypadku
   gdy, limit pocze do bazy danych zostanie przekroczony przez stae
   poczenia z procesw potomnych. Jeli twoja baza danych posiada limit
   szesnastu jednoczesnych pocze, a w danej chwili obcienie jest
   wysokie, siedemnasty proces nie bdzie mg si poczy. Jeli twoje
   skrypty zawieraj bdy, ktre nie pozwalaj zamkn pocze (na przykd
   nieskoczone ptle), baza danych z limitem 32 pocze moe szybko zosta
   zapchana. Poszukaj w dokumentacji swojej bazy danych w jaki sposb radzi
   sobie ona z porzuconymi lub bezczynnymi poczeniami.
  </simpara>
  <simpara>
   Wane podsumowanie. Stae poczenia zostay zaprojektowane tak, by
   odpowiada zwykym poczeniom. Oznacza to, e <emphasis>zawsze</emphasis>
   moesz zastpi stae poczenia zwykymi i nie zmieni to zachowania
   skryptu. Natomiast <emphasis>moe</emphasis> zmieni (i pewnie zmieni)
   jego wydajno!
  </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
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
-->