Avatar billede exodusdk Nybegynder
17. marts 2005 - 09:04 Der er 8 kommentarer

Best practices: Oprette forbindelse til mysql.

Hej

Hvad er den bedste måde at connecte til en mysql server?
Er det A:
At oprette og lukke forbindelsen med mysql_connect/mysql_close hver gang der skal bruges data fra db?
Eller B:
At oprette og lukke forbindelsen med mysql_connect/mysql_close i starten og slutningen af f.eks. index.php?
Eller C:
At oprette vedholdende (persistent) forbindelser med mysql_pconnect?

Jeg er i tvivl, så er der nogle gode pro/cons derude?
Det er til en side, der kommer til at have ~200 - 250 hits om dagen.
Avatar billede Daniel.E Praktikant
17. marts 2005 - 09:09 #1
det som der er vigtigt at huske er:

- Udnyt den forbindelse du har oprettet så meget som muligt.  Det som kræver system ressourser er at oprette forbindelser.

- Jeg ville nok benytte din eks B

- mysql_connect, mysql_close, mysql_select_db, mysql_num_rows, mysq_fetch_array

Disse funktioner skal du bare bruge, og med dem kan du næsten alt.
Avatar billede Daniel.E Praktikant
17. marts 2005 - 09:09 #2
samler ikke på points
Avatar billede exodusdk Nybegynder
17. marts 2005 - 09:21 #3
Umiddelbart er det også "B" jeg synes er mest fornuftig, og det er også den jeg bruger nu, på siden. A har jeg nærmest udelukket, det kunne bare godt være der var nogen der havde en god kommentar til den.
Persistent connections har jeg ikke rodet med, men udfra hvad jeg har læst, kan jeg ikke finde ud af hvornår en persistent connection bliver lukket, eller timer ud? Nogen der har et svar på det?
Avatar billede exodusdk Nybegynder
17. marts 2005 - 09:23 #4
og desuden bruger jeg de kommandoer du nævner + mysql_fetch_row ...
Avatar billede arne_v Ekspert
17. marts 2005 - 09:36 #5
Jeg har ingen erfaringer med PHP mysql_pconnect men i alle andre web udviklings
sprog som understøtter database connection pools, så bruger man dette.

Det er der jo en god grund til. Så medmindre PHP mysql connection pool
er speciel dårlig, så vil jeg antage at C vil give bedst performance.

(og med 200-250 hits om dagen er det totalt ligegyldigt)
Avatar billede coderdk Praktikant
17. marts 2005 - 09:57 #6
Med mindre det er din egen server bør du bruge løsning B.
Grunden til dette er at dine apacheindstillinger skal stemmer overens med dine mysqlindstillinger. Hvis du tillader færre connections mod mysql end du har processer kørende kan du komme ud for at folk pludselig begynder at se "Too many connections" på din side.
Avatar billede exodusdk Nybegynder
17. marts 2005 - 10:20 #7
Det er ikke min egen server, og jeg tror også jeg beholder den løsning jeg har nu, som er B.
Nu er det dog sådan, at i min phpinfo()(http://www.rnpf.dk/phpinfo.php) står der faktisk at:
mysql.max_links Unlimited Unlimited
mysql.max_persistent Unlimited Unlimited
Er det normalt at disse er sat til unlimited?
Avatar billede coderdk Praktikant
17. marts 2005 - 10:24 #8
Ja, det er vist default, men det er kun hvis du vil have en begrænsning i PHP så vidt jeg ved - Hvis du skal checke hvor mange connections mysql tillader skal du spørge mysql med noget som:

  show variables like 'max_c%';
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester