Avatar billede labisama Nybegynder
04. september 2006 - 15:57 Der er 12 kommentarer og
1 løsning

Rigtig brug af mysql_close og i løkker?

Hej med jer eksperter!

Jeg har et kæmpe problem ang. min programmering og mysql database.

Jeg er ejer af en side som har rigtig mange brugere online. Der bliver selvfølgelig åbnet og lukket database konstant, og det resulterede til sidst i at min hosting partner har valgt at lukke siden.

De mente at siden fik mysql databasen til at gå ned, og at siden først blev åbnet igen hvis jeg fik styr på database udtrækningerne osv.

Jeg har læst mig frem til at PHP selv lukker for databasen forbindelsen når et script er udført. Men jeg har nu alligevel en connection i toppen af hver side, og en mysql_close(); til slut.

Alligevel er dette åbentbart ikke nok.

Er det bedre hvis jeg connecter inden et script bliver udført, og så lukker med mysql_close; lige bagefter. Dvs. måske så vil dette forekomme 3-4 gange på én enkelt side, at den åbner og lukker forbindelsen.

Jeg ved at det er specielt på de sider hvor jeg kører en while-løkke, at den virker trækker tænder ud. Kan man gøre noget her?

Bl.a. bruger jeg while-løkken til at bestemme hvilken stilling/placering den aktuelle bruger har i mit pointsystem.

Håber jeg kan få noget god og professionel vejledning!

Jeg takker på forhånd...
Avatar billede snakeeye Nybegynder
04. september 2006 - 16:13 #1
Du siger at der er placeret en connection i toppen af hver side, er dette nu også nødvendigt? Jeg mener er der sider hvor du ikke har brug for at lave denne connection?

Det med whileløkken hvor du bestemmer hvilken placering som den aktueller bruger har. Kunne den ikke blive lavet vha en enkelt dog lidt komplex SQL udtræk sådan du ikke har en whileløkke til at trække en hel masse unødvendig data ud af databasen?
Avatar billede mcgoat Nybegynder
04. september 2006 - 16:24 #2
prøv eventuelt at kigge på mysql_pconnect: http://www.php.net/mysql_pconnect
istedet for mysql_connect
Avatar billede mcgoat Nybegynder
04. september 2006 - 16:25 #3
mysql_pconnect() acts very much like mysql_connect() with two major differences.

First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, username and password. If one is found, an identifier for it will be returned instead of opening a new connection.

Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (mysql_close() will not close links established by mysql_pconnect()).

så der åbner du kun forbindelsen 1 gang
Avatar billede mcgoat Nybegynder
04. september 2006 - 16:25 #4
og skal ikke bruge mysql_close
Avatar billede labisama Nybegynder
04. september 2006 - 16:28 #5
Connection i starten er nødvendigt. Da når man er logget ind fx. har en venne-liste, nyheder som trækkes ud osv.

Ang. whileløkken, er der muligvis en anden mulighed at gøre det ved. Men jeg må tilstå jeg ved ikke lige hvordan?

Min løkke den sætter sådan set stillingen på alle brugerne ranget efter points i min bruger tabel.
Avatar billede labisama Nybegynder
04. september 2006 - 16:29 #6
mcgoat > Tror du ikke at det vil skabe max_connections error på meget kort tid?
Avatar billede zynzz Praktikant
04. september 2006 - 16:35 #7
Det med placering af brugeren kan gøres noget nemmere:

$placering = mysql_num_rows(mysql_query("SELECT point FROM brugere where point>'$row[point]'")) + 1;

Sådan skal du gøre:

connect
løkken
close connect
Avatar billede yHec Novice
04. september 2006 - 16:38 #8
eller
$placering="SELECT * FROM brugere SORT BY point DESC"

Brug ASC hvis du vil sortere omvnedt

Connect
Løkke
Close

/y
Avatar billede yHec Novice
04. september 2006 - 16:38 #9
^^ upe ikke SORT men ORDER

/y
Avatar billede labisama Nybegynder
04. september 2006 - 16:42 #10
y > Tror ikke du helt forstod hvad stillingen den gik ud på.

zynzz > Ja det er en del nemmere. Så det også ret nemt at lægge den aktuelle placering ind i tabellen hos brugeren.


Men var der nogle som kunne svare mig på det med mine connections problemer. Eller kan while-løkken have været problemet som gjorde at databasen blev lukket?
Avatar billede Slettet bruger
04. september 2006 - 16:42 #11
Uden at være helt sikker, og som mulig oplæg til nedslagtning, har jeg ladet mig fortælle at der kan være performancemæssige fordele i at benytte [link_identifier] i

  resource mysql_query ( string query [, resource link_identifier] )

--pacroon
Avatar billede labisama Nybegynder
05. september 2006 - 10:02 #12
Ingen som kan fortælle mig hvordan mysql_close er bedst at bruge på ens sider?
Avatar billede labisama Nybegynder
14. november 2006 - 15:04 #13
Lukker. Trist at jeg ikke blev klogere :(
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