/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Skal man lukke sine DB forbindelser?
Fra : Jimmy


Dato : 10-06-03 10:48

Hej

Jeg har fået at vide, at php selv lukker databaseforbindelsen så snart
scriptet er afviklet.

Er der derfor nogen større grund til at lukke databaseforbindelsen manuelt?

I Classic ASP er der rig grund til det.

Mvh
Jimmy




 
 
Christian Joergensen (10-06-2003)
Kommentar
Fra : Christian Joergensen


Dato : 10-06-03 16:24

On Tue, 10 Jun 2003 11:47:38 +0200, Jimmy wrote:

> Jeg har fået at vide, at php selv lukker databaseforbindelsen så snart
> scriptet er afviklet.
>
> Er der derfor nogen større grund til at lukke databaseforbindelsen
> manuelt?

Nej - ikke så længe afviklingstiden strækker sig over flere timer.

> I Classic ASP er der rig grund til det.

Hvordan det?

--
Christian Jørgensen | In order to understand recursion
http://www.razor.dk | one must understand recursion.


Jimmy (10-06-2003)
Kommentar
Fra : Jimmy


Dato : 10-06-03 17:55


"Christian Joergensen" <mail@phpguru.dk> wrote in message
news:pan.2003.06.10.15.23.33.106985@razor.dk...
> On Tue, 10 Jun 2003 11:47:38 +0200, Jimmy wrote:
>
> > Jeg har fået at vide, at php selv lukker databaseforbindelsen så snart
> > scriptet er afviklet.
> >
> > Er der derfor nogen større grund til at lukke databaseforbindelsen
> > manuelt?
>
> Nej - ikke så længe afviklingstiden strækker sig over flere timer.

Hmm, selvom der blev puttet "ikke" ind i sætningen lyder det som noget fri
fortolkning.
Har du en kilde?


> > I Classic ASP er der rig grund til det.
>
> Hvordan det?

Fordi ASP ikke frigiver ressourcerne med det samme og således optages der
mere og mere ram til ASP skal unloades.

Mvh
Jimmy



Morten Winkler Jørge~ (11-06-2003)
Kommentar
Fra : Morten Winkler Jørge~


Dato : 11-06-03 08:06


> Fordi ASP ikke frigiver ressourcerne med det samme og således optages der
> mere og mere ram til ASP skal unloades.

Men det er jo helt normalt - at MS Software optager mere og mere ram
indtil det unloades.

Morten
....som ikke kunne lade være

Per Thomsen (10-06-2003)
Kommentar
Fra : Per Thomsen


Dato : 10-06-03 21:53

Jimmy wrote:

> Hej
>
> Jeg har fået at vide, at php selv lukker databaseforbindelsen så snart
> scriptet er afviklet.
Det er korrekt.
>
> Er der derfor nogen større grund til at lukke databaseforbindelsen manuelt?
Ja - det er mere "rigtigt" .

Det er self. ikke mig, der bestemmer hvad der er rigtig og forkert, men
imho, når man åbner noget, skal man også lukke det igen, så snart man er
færdig med at bruge det.

Operativ systemet ville vel også før eller siden frigive et handle til
en fil, du har åbnet, og så ikke lukket igen. Indtil OS gør det, vil
ingen andre programmer kunne åbne filen (self. antaget at du lås på den).

Det er vel samme princip her, selv om der oftest ikke går særlig lang
tid med at afvikle et PHP script - og du låser måske heller ikke noget i
databasen, men du optager ikke desto mindre en resource, i længere tid
end det er nødvendigt.

Jeg ville endda gå så langt som til at betragte det som en fejl, ikke at
lukke databasen igen - vi er bare så heldig stillet at PHP er rigtig,
rigtig god til at håndtere den fejl ;)

[klip]
MVH Per Thomsen,
http://www.pert.dk/


Martin Møller Bæk (10-06-2003)
Kommentar
Fra : Martin Møller Bæk


Dato : 10-06-03 22:02

"Per Thomsen" <pert@pert.dk> skrev i en meddelelse
news:3ee6451c$0$15313$ba624c82@nntp03.dk.telia.net...
> Jeg ville endda gå så langt som til at betragte det som en fejl, ikke at
> lukke databasen igen - vi er bare så heldig stillet at PHP er rigtig,
> rigtig god til at håndtere den fejl ;)

Jeg vil absolut ikke kalde det en fejl, ikke at lukke forbindelsen igen.
Jeg vil måske nærmere kalde den en service fra PHP's side.
Jeg lukker aldrig selv forbindelsen. Typisk har jeg flere database kald
og så kan jeg enten åbne og lukke hver gang eller holde styr på,
hvilket kald er det sidste. Det synes jeg er for besværligt, og derfor
vil jeg hellere lade PHP gøre det. Så jeg er da helt sikkert glad for
at PHP er "rigtig god til at håndtere den fejl"

Typisk tager det jo meget lidt tid at eksekvere noget PHP kode,
hvorfor det reelt ikke er særlig lang tid, forbindelse er unødvendig
åben.

--
mvh
Martin
www.yavi.dk
www.web2matic.dk



Per Thomsen (10-06-2003)
Kommentar
Fra : Per Thomsen


Dato : 10-06-03 23:46

Martin Møller Bæk wrote:

> "Per Thomsen" <pert@pert.dk> skrev i en meddelelse
> news:3ee6451c$0$15313$ba624c82@nntp03.dk.telia.net...
>
>>Jeg ville endda gå så langt som til at betragte det som en fejl, ikke at
>>lukke databasen igen - vi er bare så heldig stillet at PHP er rigtig,
>>rigtig god til at håndtere den fejl ;)
>
>
> Jeg vil absolut ikke kalde det en fejl, ikke at lukke forbindelsen igen.
> Jeg vil måske nærmere kalde den en service fra PHP's side.

Ok, der var jeg måske lidt for hurtig i vendingen. Efter et lille kik
på:
<http://dk.php.net/manual/en/language.types.resource.php#language.types.resource.self-destruct>
kan jeg jo, se at reference-counting faktisk gør det til en service, og
ikke en fejlhåndtering (som jeg var så frimodig at kalde det). Resourcer
bliver nu frigivet at garbage collectoren - og så er mit argument jo,
ligesom faldet til jorden.


> Jeg lukker aldrig selv forbindelsen. Typisk har jeg flere database kald
> og så kan jeg enten åbne og lukke hver gang eller holde styr på,
> hvilket kald er det sidste. Det synes jeg er for besværligt, og derfor

Det syntes jeg så ikke er noget godt argument, men det er måske også
smag og behag. Jeg kunne aldrig finde på at undlade at gøre noget, fordi
det er "for besværligt" (ok, ok, _aldrig_ er måske så meget sagt, men
det er ihvertfald sjældent).

Jeg ville nok vælge at åbne en forbindelse, lave alle de kald til
databasen, der skal laves, lukke forbindelsen, og så fortsætte med at
behandle, det data jeg har hentet efterfølgende.

Det kan vel også have noget at gøre med, hvor mange mennesker der er
involveret i et projekt - for det er klart nemmere at holde rede i, hvis
man selv skriver alt koden. Men hvis man f.eks. anvender klasser,
skrevet af andre udviklere, som man måske kun kender interfacet til, kan
det være svært at vide, hvad der sker med database connections.

> vil jeg hellere lade PHP gøre det. Så jeg er da helt sikkert glad for
> at PHP er "rigtig god til at håndtere den fejl"
>
> Typisk tager det jo meget lidt tid at eksekvere noget PHP kode,
> hvorfor det reelt ikke er særlig lang tid, forbindelse er unødvendig
> åben.

Det har du jo så fuldstændig ret i, men det forsøgte jeg også at sige.
Jeg vil nu stadig blive ved med at lukke mine connections fordi at jeg
syntes det er "pænt" at gøre det - men jeg må jo indrømme at du har
fuldstændig ret i at der ikke er nødvendigt - og at det så absolut ikke
er nogen fejl, ikke at gøre det.

MVH Per Thomsen
http://www.pert.dk



Allan Kok (11-06-2003)
Kommentar
Fra : Allan Kok


Dato : 11-06-03 16:42

Per Thomsen wrote:
> Det er vel samme princip her, selv om der oftest ikke går særlig lang
> tid med at afvikle et PHP script - og du låser måske heller ikke
> noget i databasen, men du optager ikke desto mindre en resource, i
> længere tid
> end det er nødvendigt.
>
> Jeg ville endda gå så langt som til at betragte det som en fejl, ikke
> at lukke databasen igen - vi er bare så heldig stillet at PHP er
> rigtig,
> rigtig god til at håndtere den fejl ;)

Hvis man åbner database forbindelsen som en "persistent connection" er ideen
jo at forbindelsen _ikke_ skal lukkes igen.
PHP kan jo så genbruge åbne forbindelser.

mvh
Allan Kok



Søg
Reklame
Statistik
Spørgsmål : 177502
Tips : 31968
Nyheder : 719565
Indlæg : 6408534
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste