PDA

Bekijk Volledige Versie : mysql automatisch closen



easy2host
01/08/08, 09:10
We hebben af en toe last van websites die nogal druk bezocht worden en waarbij de klant vergeet mysql_close() te gebruiken in haar php scripts. Doordat veel mensen dat gelijktijdig doen lopen we wel eens op het probleem dat het max connecties gehaald gaat worden op mysql waardoor de rest van de sites de melding "too many connections" krijgen.

Is hier een oplossing voor zodat connecties automatsch gesloten worden?

nielsrenselaar
01/08/08, 09:14
mysql_close wordt volgens mij tegenwoordig automatisch aangeroepen door PHP zelf? Alleen niet als ze mysql_pconnect gebruiken, maar in dat geval moet je bij de gebruiker aangeven dat mysql_pconnect niet de bedoeling is op de shared omgeving (of in je excluded functions lijst gooien)

Wido
01/08/08, 09:35
Op welke waarde staat je wait_timeout? Die hebben wij bijvoorbeeld op 10 sec staan.

easy2host
01/08/08, 09:56
Op welke waarde staat je wait_timeout? Die hebben wij bijvoorbeeld op 10 sec staan.

Staat bij ons op 20 sec

Het betreft trouwens een Plesk omgeving, maar we hebben zelf even een my.cnf aangemaakt want met de plesk instellingen was het helemaal een ramp.

set-variable = wait_timeout=20
set-variable = connect_timeout=20

Wido
01/08/08, 09:58
Dat het een plesk omgeving is maakt niet uit, MySQL is MySQL :)

Als je kijkt met SHOW VARIABLES, is de wait_timeout dan wel op 20 gezet?

easy2host
01/08/08, 10:25
Dat het een plesk omgeving is maakt niet uit, MySQL is MySQL :)

Als je kijkt met SHOW VARIABLES, is de wait_timeout dan wel op 20 gezet?

Heej, die staat op 28000 ;-(..

nu op 10 ;-)

bebbet
11/08/08, 11:31
Je kunt ook in PHP een pagina aan elk einde aanroepen, je kunt dus ook een pagina maken bijv
/root/endmysql.php:
<?
@mysql_close();
?>

en in PHP met append_end var (als ik het goed heb) weer toe voegen, heb op mijn thuisserver zo boven en onder een pagina (snipplet) toegevoegd om parsetijd te laten zien.. maar dat terzijde.

Bebbet

Triloxigen
11/08/08, 16:23
mysql_close() is in principe overbodig, als de uitvoer van PHP gestopt wordt dan stopt de database connectie ook.

Wat bebbet aangeeft ben ik het trouwens ook niet helemaal mee eens, je hoort foutmelding eigenlijk niet op een dergelijke manier te negeren (met een @ dus).

Ramon Fincken
11/08/08, 16:45
mysql_close() is in principe overbodig, als de uitvoer van PHP gestopt wordt dan stopt de database connectie ook.

Wat bebbet aangeeft ben ik het trouwens ook niet helemaal mee eens, je hoort foutmelding eigenlijk niet op een dergelijke manier te negeren (met een @ dus).

Lees eens vanaf post #2?

Triloxigen
11/08/08, 17:35
Lees eens vanaf post #2?
EN dan?

Als mysql_pconnect wordt gebruikt is dat niet voor niks, ik zou het niet waarderen als iemand anders aan mijn code zou komen.

Ramon Fincken
11/08/08, 17:36
Daar staat dat het wel "automagisch" gesloten word, maar dat er dus kennelijk wel een delay in zit.

pconnect niet vloeken op WHT !

mind
11/08/08, 21:39
Alleen niet als ze mysql_pconnect gebruiken, maar in dat geval moet je bij de gebruiker aangeven dat mysql_pconnect niet de bedoeling is op de shared omgeving (of in je excluded functions lijst gooien)
"mysql.allow_persistent = Off" in je php.ini is toch net even wat eleganter.