Gå til innhold

Koble til database en gang eller per spørring


Anbefalte innlegg

Om man f.eks. skal hente ut opplysninger fra en mySQL-database på ti forskjellige steder i et script, lønner det seg å koble til databasen en gang (øverst i scriptet), eller lage en funksjon som kobler til databasen for hver spørring?

Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+142

mysql_close() er vel for å avslutte en åpen tilkobling på riktig vis.

Gjøres sikkert uansett, men om en spørring skulle ha hengt seg i mysql-en mens php-en avslutte skriptet, kunne data gått tapt. Tror jeg.

Lenke til kommentar

det er vanligvis ikke nødvendig å bruke mysql_close ettersom php er laget såpass idiotsikkert at alle åpne strømmer blir stengt når scriptet er ferdigkjørt uansett.

 

Derimot kan det være nyttig å stenge tilkoblingen til mysql-servern midlertidig for å frigjøre minne, som kjent har php en ganske begrenset minnemengde tilgjengelig under kjøring, og minnehungrige operasjoner som for eksempel bildebehandling, lesing av innholdet i store filer, tilkoblinger til andre servere vil kræsje dersom du bruker opp minnegrensen (på min server er den på 16 MB, dyrere host'er kan kanskje ha mer).

 

Ved å bruke mysql_close frigjør man en del minne, er ikke sikker på hvor mye, det avhenger muligens av hvor mange og hvor store spørringer man kjører (regner med alle husker å bruke mysql_free_result() etter hver eneste spørring).

Lenke til kommentar
Gjest Slettet+142
(regner med alle husker å bruke mysql_free_result() etter hver eneste spørring).

8537442[/snapback]

ehm..

hv er det den gjør? :blush:

Lenke til kommentar

når du kjører $res = mysql_query("SELECT...."); blir $res en ressurs som opptar mer eller mindre minne. mysql_free_result($res) sletter $res fra minnet og frigjør den minnemengden den opptok, og bør kjøres så fort man er ferdig med å hente ut dataene man får ut av $res.

Lenke til kommentar

Mamma mia for en elendig skikk folk bruker her da? Selvsagt skal tilkobling lukkes ellers er den jo åpen til den når timeout (som nok ikke er når scriptet avsluttes). Har man bare lov til å ha få tilkoblinger mot mysql-server så er det et helvete når folk ikke gjør jobben skikkelig å lukker tilkoblingene når de er ferdig.

 

Edit: Selvsagt er det fordelaktig å koble seg til mysql færrest mulig ganger. Å opprette og lukke en tilkobling tar tid det også.

Endret av Ernie
Lenke til kommentar
ellers er den jo åpen til den når timeout (som nok ikke er når scriptet avsluttes).

8542843[/snapback]

 

 

Using mysql_close() isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution.

Lenke til kommentar

Greit nok, men det gjør det ikke pent. PHP er vel stort sett eneste programmeringsspråk (om PHP i det heltatt kan kalles programmering) hvor man kan gjøre slikt. Når man åpner noe er det god programmeringsskikk å lukke det også.

Lenke til kommentar
PHP er vel stort sett eneste programmeringsspråk hvor man kan gjøre slikt.

8545855[/snapback]

 

det har du helt rett i, det er også den store fordelen (og ulempen) med php som gjør at hvem som helst kan lage script som (stort sett) fungerer. Er forøvrig helt enig med deg, men når selv manualen sier det så velger jeg å stole på den... (om du måtte lure, jeg bruker bestandig mysql_close() før jeg avslutter scriptet)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...