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 (190 lines) | stat: -rw-r--r-- 8,097 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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
<?xml version="1.0" encoding="iso-8859-2"?>
<!-- EN-Revision: 1.18 Maintainer: goba Status: ready -->

 <chapter id="features.persistent-connections">
  <title>lland adatbzis kapcsolatok</title>

  <simpara>
   Az lland kapcsolatok SQL adatbzisokkal nem sznnnek meg,
   ha a szkripted futsa befejezdik. Ha egy lland kapcsolatot
   krsz, a PHP ellenrzi, hogy van-e mr megegyez kapcsolat (ami
   mg az elz krsekbl maradhatott meg), s ha ltezik,
   akkor azt hasznlja. Ha nem tall ilyet, ltrehoz egy kapcsolatot.
   A megegyez kapcsolat azt jelenti, hogy ugyanaz a host s ugyanaz
   a felhasznli nv s jelsz kerlt felhasznlsra.
  </simpara>
  
  <note>
   <para>
    lland kapcsolatokat nem csak adatbzisok szolgltathatnak,
    vannak ms ilyen kpessg kiterjesztsek, mint pldul az
    <link linkend="ref.imap">IMAP kiterjeszts</link>.
   </para>
  </note>

  <simpara>
   Ha esetleg nem ismered alaposabban a webszerverek mkdst,
   hibs kp alakulhat ki benned az lland kapcsolatokrl.
   Ezek a kapcsolatok <emphasis>nem</emphasis> alkalmasak arra,
   hogy felhasznli 'session'-eket nyiss ugyanazon SQL linkkel.  
   <emphasis>Nem</emphasis> adnak lehetsget hatkony
   tranzakcik felptsre. Egszen pontosan, hogy alaposabban
   tisztzzuk a krdst, az lland adatbzis kapcsolatok nem
   adnak <emphasis>semmilyen</emphasis> plusz lehetsget, ami
   nlklk nem ltezne.
  </simpara>

  <simpara>
   Mirt?
  </simpara> 

  <simpara>
   A vlaszhoz meg kell rteni, hogyan mkdnek egytt a webszerverek
   a PHP-vel. Ennek hrom klnbz mdja lehetsges.
  </simpara>

  <simpara>
   Az els lehetsg, hogy a PHP-t CGI &quot;wrapper&quot;-knt hasznlod.
   Ha ezt a mdszert hasznlod, minden oldal lekrsekor s feldolgozsakor
   egy j pldny fut le a PHP feldolgozbl. Mivel a szkript
   futtatsa utn egy ilyen pldny lell, minden erforrs, amit
   lefoglalt (belertve az adatbzis kapcsolatotokat) megsznik.
   Ebben az esetben semmit sem rsz azzal, hogy lland kapcsolatot
   prblsz nyitni, ez az llandsg nem valsul meg.
  </simpara>

  <simpara>
   A npszerbb msodik forma, amikor a PHP-t modulknt futtatod
   egy tbb process-es webszerverben. Egy tbb process-es webszerver
   tipikusan rendelkezik egy szl process-el, ami koordinlja a
   tbbi kapcsold process (a gyermekek) munkjt, amik valjban
   a weboldalak kiszolglst vgzik. Ha egy krs rkezik
   egy klienstl, egy ppen szabad gyermekprocess kapja meg a kiszolglsra
   az utastst. Ez azt jelenti, hogy ha ugyanaz a kliens egy jabb
   kapcsolatot kezdemnyez, esetleg egy msik gyermekprocesshez jut, mint
   az els alkalommal. Ebben az esetben az lland adatbzis kapcsolat
   azt jelenti a szmodra, hogy az egyes gyermekprocess-ek csak az els
   alkalommal kell, hogy ltrehozzk a kapcsolatot az adatbzissal,
   s amennyiben egy ksbbi krs ugyanebben a gyermekprocessben
   ugyanazt a kapcsoltatot kvnja megnyitni, a ltez kapcsolat
   kerl felhasznlsra.
  </simpara>

  <simpara>
   A harmadik mdszer, hogy a PHP-t plug-in-knt hasznlod egy
   'multithreaded' web szerverben. Ez azt jelenti, hogy az
   ISAPI, WSAPI, s NSAPI (Windows alatt) formk hasznlhatak
   a PHP-vel. Ez a PHP 4.0.0 ta lehetsges, s gy a PHP alkalmas
   plug-in szint egyttmkdsre a Netscape FastTrack (iPlanet),
   a Microsoft Internet Information Server (IIS),
   s az O'Reilly WebSite Pro szerverekkel, valamint ms,
   a fenti standardokat tmogat szerverekkel. Ebben az esetben
   az lland adatbzis kapcsolatok mkdse megegyezik a fent
   lert tbb process-es modellel.
  </simpara>

  <simpara>
   Ha az lland adatbzis kapcsolatok nem nyjtanak plusz
   szolgltatsokat, mgis mire jk?
  </simpara>

  <simpara>
   A vlasz igen egyszer: hatkonysg! Az lland adatbzis
   kapcsolatok akkor lehetnek hasznosak, ha nagy a feleslegesen
   adatbzishoz kapcsoldssal eltlttt id. Az, hogy ez valjban
   milyen esetben van gy, rengeteg faktoron mlik. Pldul
   azon, hogy milyen tpus adatbzisrl van sz, azonos, vagy
   klnbz gpen van-e, mint a szerver, mennyire terhelt az
   SQL szerver, stb. Lnyegben, ha sok idt vesz ignybe a
   kapcsolds, az lland kapcsolatok jelents segtsget
   nyjthatnak neked. Egy gyermekprocess gy csak egy alkalommal
   kell, hogy kapcsoldjon, ahelyett, hogy egy
   ezt kr oldal minden feldolgozsakor megtenn. Ez azt is
   jelenti, hogy minden gyermekprocessnek, meglesz a maga
   lland kapcsolata a szerver fel. Pldul, ha 20 klnbz
   gyermekprocess dolgozott fel egy lland adatbziskapcsolatot
   kr oldalt, 20 klnbz lland kapcsolatod lesz az SQL
   szerverhez, egy-egy minden gyermektl.
  </simpara>

  <simpara>
   Fontos megjegyezni azonban, hogy ennek lehetnek htrnyos
   kvetkezmnyei is, ha az adatbzisszerver korltozott
   kapcsolatainak szmt az lland kapcsolatok lefoglaljk.
   Ha az adatbzisszervered egyidejleg maximlisan 16 kapcsolatot
   kpes kezelni, s egy forgalmas idszakban egyszerre 17
   process prbl meg kapcsoldni az adatbzishoz, az egyik
   kptelen lesz erre... Ha olyan hiba van a programodban
   (pldul vgetelen ciklus), ami nem hagyja a kapcsolat
   felbontst, egy csak 32 kapcsolattal br adatbzis
   alaposan le lesz foglalva. Nzz utna az adatbzisszervered
   dokumentcijban, hogy hogyan tudod lekezelni az
   elhagyott vagy inaktv kapcsolatokat.
  </simpara>
 
  <warning> 
   <simpara> 
    Van mg nhny faktor, amit rdemes figyelembe venned,
    ha lland adatbzis kapcsolatokat hasznlsz. Egy ilyen
    problma, hogy ha tbla lezrst (lock) hasznlsz egy
    lland kapcsolaton, s a szkript valamilyen okbl nem
    tudja feloldani a zrat, ezt a kapcsolatot hasznl
    tovbbi szkriptek nem fognak helyesen mkdni, s a
    webszerver vagy adatbzis szerver jraindtsra lehet
    szksg a feloldshoz. Hasonlan ha tranzakcikat hasznlsz,
    a tranzakci blokk tovbb folytatdik a kvetkez megegyez
    kapcsolatot hasznl szkriptben, ha a tranzakcit indt
    szkript nem tudja lezrni azt. Ezekben az esetekben a
    <function>register_shutdown_function</function> fggvnyt
    hasznlhatod, hogy egy egyszer "takart" fggvnyt futtass
    le a programod vgeztvel, ami visszavonja a tranzakcikat,
    s feloldja a tbla zrakat. Jobban teszed azonban, ha
    gy kerld meg a problmt, hogy nem hasznlsz lland
    kapcsolatokat olyan szkriptekben, amik tbla zrakat,
    vagy tranzakcikat alkalmaznak.
   </simpara>
  </warning>

  <simpara>
   sszefoglalva: az lland adatbziskapcsolatokat gy terveztk,
   hogy megfeleltethetek legyenek a hagyomnyos kapcsolatokkal.
   Ez azt jelenti, hogy <emphasis>minden esetben</emphasis>
   lehetsged van az lland kapcsolatokat hagyomnyos kapcsolatokra
   cserlni, s ez nem fogja megvltoztatni a szkriptjeid mkdst.
   Ez a lps megvltoztat<emphasis>hat</emphasis>ja a szkripted
   hatkonysgt, de a viselkedst nem!
  </simpara>

  <para>
   Lsd mg <function>fbsql_pconnect</function>,
   <function>ibase_pconnect</function>, <function>ifx_pconnect</function>,
   <function>imap_popen</function>, <function>ingres_pconnect</function>,
   <function>msql_pconnect</function>, <function>mssql_pconnect</function>,
   <function>mysql_pconnect</function>, <function>OCIPLogon</function>,
   <function>odbc_pconnect</function>, <function>Ora_pLogon</function>,
   <function>pfsockopen</function>, <function>pg_pconnect</function>, s
   <function>sybase_pconnect</function>.
  </para>

 </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
-->