Besoin de renseignement sur une erreur SQL

WRInaute passionné
J'ai parfois une erreur SQL 2013 sur mon site.

J'utilise des connections persistantes et je suis en mutualisé.

Quelqu'un à une idée de cette cause ?
 
WRInaute discret
Ahh..OK.

Je ne peux pas te répondre de manière certaine, cela dépend de la configuration et des limites que t'impose ton hébergeur en mutualisé....

Souvent, en mutualisé, il vaut mieux éviter d'utiliser des connexions persistantes aux bases de données, surtout si leur nombre est limité (et c'est souvent le cas).

Par exemple, chez OVH (à l'époque où j'étais en mutualisé), il y a une limite de 3 connexions simultanées autorisées...
Déjà en faisant des mysql_close() dès que nécessaire, si tu as un forum qui marche, tu peux te retrouver avec des messages du genre "mysql : too many connected...".
J'imagine que si tu utilises des connexions persistantes et que tu atteind la limite de connexions simultanées, certaines connexions seront brisées, d'où ce message... Mais ce n'est que mon avis.
 
WRInaute occasionnel
essaie d'abandonner la connexion persistante, ça consomme trop de ressource ça pourrait être la cause.
 
WRInaute accro
en meme temps, si il est sur du mutualisé, pconnect doit etre un alias de connect, non ? vous connaissez des mutualisés avec des vrais connexions persistentes ?
 
WRInaute passionné
J'ai remplacé la connection persistante par une coànnection normale.

Par contre j'ai lu qu'il n'était pas nécessaire de clore la connection et de libérer les resources, car cela se fait automatiquement à la fin du script.

Vous en pensez quoi ?
 
WRInaute discret
Il faut fermer la connection après chaque mysql_db_query
Code:
 $db = mysql_connect($host, $user, $pass);
mysql_select_db($base,$db);
 $requete="select * from matable";
$result = mysql_db_query($base,$requete);
mysql_close();
while($row = mysql_fetch_array($result)){
echo $row["champs1"];
}
....
 
WRInaute passionné
Pour prendre mon cas, j'ai ce code :
Code:
function requeteSql($sql_requete, $sql_description) {
	$sql_resultat = @mysql_query($sql_requete); // Envoi la requête au serveur SQL
	
	if	(!$sql_resultat) {
		$messErreurSql = 'Le serveur SQL est dans l\'impossibilité d\'effectuer la requête pour '.$sql_description.'<br />';
		$messErreurSql .= 'Un e-mail à été envoyé à l\'administrateur pour lui signaler le problème.<br /><br />';
		$messErreurSql .= 'Voici le message d\'erreur renvoyé par la base de données :<br />';
		$messErreurSql .= 'Code erreur ';
		
		emailErreur($messErreurSql, 'SQL');
		
		exit($messErreurSql.mysql_errno().' : '.mysqlErreur() );
		}
	return $sql_resultat;
}

Je peut ajouter mysql_close() à la fin de la fonction. c'est cela ?
 
WRInaute discret
après $sql_resultat = @mysql_query($sql_requete); // Envoi la requête au serveur SQL
c'est encore mieux

quoi que je sais pas si $messErreurSql.mysql_errno() marchera dans ce cas
 
WRInaute occasionnel
vous n'êtes pas obligés de fermer la connexion. perso j'ai jamais fait. ça sert à quoi si tout le script est mort pour le processeur :wink:
 
WRInaute discret
si on ne ferme pas la connexion elle se ferme à la fin de la page donc si il y a beaucoup de visiteurs ça fait des connexions en moins ( erreur too many connctions)
 
WRInaute occasionnel
mate a dit:
si on ne ferme pas la connexion elle se ferme à la fin de la page donc si il y a beaucoup de visiteurs ça fait des connexions en moins ( erreur too many connctions)
pas à la fin de la page mais à la fin du script php.
on doit fermer si le script continue à s'executer plusieurs secondes après fin de traitment des donnés (cas rare)
 
WRInaute passionné
mate a dit:
après $sql_resultat = @mysql_query($sql_requete); // Envoi la requête au serveur SQL
c'est encore mieux

quoi que je sais pas si $messErreurSql.mysql_errno() marchera dans ce cas

Je te confirme que cela marche ; j'ai mon erreur SQL décrite si besoin.
 
WRInaute passionné
nodom a dit:
mate a dit:
si on ne ferme pas la connexion elle se ferme à la fin de la page donc si il y a beaucoup de visiteurs ça fait des connexions en moins ( erreur too many connctions)
pas à la fin de la page mais à la fin du script php.
on doit fermer si le script continue à s'executer plusieurs secondes après fin de traitment des donnés (cas rare)

C'est peut-être le problème que j'ai... tout au moins quant à la longueur d'exécution dans certain cas.

J'ai un script un peu complexe, qui me posait problème quelquefois alors que j'étais en connection persistante.
Je suis passé aux connection normale, et le problème apparaissait toujours.
Je teste donc avec sa proposition de fermer chaque connection au fur et à mesure, et les ouvrir à nouveau en cas de besoin.

Voici l'adresse du script en question : https://www.webrankinfo.com/forum/t/petit-soucis-pour-optimiser-un-script.35615/
 
Discussions similaires
Haut