Help !!! probleme de temps de connexion sur mon forum

WRInaute accro
HELP !

Je suis nul en PHP :oops:

j'ai un problème qui m'a été signalé par OVH :

"Notre système de surveillance (Okillerd Mysql), a détecté
un problème avec vos connexion au serveur MySQL. Vous êtes
bien connectez, mais vous oubliez de vous déconnectez ou alors
votre traitement dure plus longtemps qu'il ne devrait.

Il s'agit de:
| Id | User | Host | db | Command | Time | State | Info |
***|***|web12.***.net|***|Sleep|6|||"



Bref, faudrait pouvoir déconnectez les users automatiquement quand ils quittent le forum

mon fichier config est cela :

<?php
/*
XMB 1.8 Partagium
© 2001 - 2003 Aventure Media & The XMB Developement Team
http://www.aventure-media.co.uk
http://www.xmbforum.com

For license information, please read the license file which came with this edition of XMB
*/

// Database connection settings
$dbname = '***'; // Name of your database
$dbuser = '***'; // Username used to access it
$dbpw = '***'; // Password used to access it
$dbhost = '***'; // Database host, usually 'localhost'
$database = 'mysql'; // Database type, currently only mysql is supported.
$pconnect = 0; // Persistent connection, 1 = on, 0 = off, use if 'too many connections'-errors appear

// Table Settings
$tablepre = 'xmb_'; // Table-pre

// Path-settings
// In full_path, put the full URL you see when you go to your boards, WITHOUT the filename though!!
// And please, don't forget the / at the end...
$full_url = 'http://www.americas-fr.com/';

// Plugin Settings
$plugname[1] = ''; // Added plugin name, to create another plugin, copy and change [1] to [2] etc
$plugurl[1] = ''; // This is the location, link, or URL to the plugin
$plugadmin[1] = 'no'; // Is this plugin only for admins? Set to yes for admins, no for public

// Registration settings
/***************
* Registrations from the same IP to happen more than once per 24 hours,
* To allow
* turn the following option 'off'. Meaning instead of the default:
* $ipreg = 'on';
*
* change it to:
* $ipreg = 'off';
*
****************
* The ipcheck, checks if your IP is a valid IPv4 or IPv9 type, if none of these, it will kill.
* this might shut a few users out, so you can turn it off by changing the $ipcheck variable to 'off'
****************/

$ipreg = 'on';
$ipcheck = 'on';
?>


Vous avez un idée ? :roll:
 
J
JPC
Guest
ben en fait peut être dans un footer de ton forum si tu en as un ?
ou en fin de ta page principale qui ferait le include de ton forum ?...
 
WRInaute passionné
JPC a dit:
il faudrait mettre des mysql_close() à la fin de tes pages php...

A la fin des pages ça ne sert à rien, vu que la déconnexion se fait automatiquement. Par contre, il faudrait en mettre dès que la connexion n'est plus nécessaire.
Pour info, on peut mettre un mysql_close() juste après un mysql_query() et AVANT (oui oui) le mysql_fetch_*
Comme en général on boucle sur cette fonction, ça peut s'avérer un gain non négligeable de déconnecter avant la boucle.

Fred
 
WRInaute accro
Ya bien un header et un index... le footer est géré par un template... mais je ne vois pas du tout où placer ça 8O

ya des query partout dans mon index.php :lol:
 
W
Webby
Guest
comme te le conseille JPC, il vaut mieux fermer tes connexions à la fin de toute page où tu fait un querry, plutôt que d'attendre la déconnexion automatique sur page (par timout). C'est plus propre et plus sûr.
 
WRInaute accro
Vous vous rendez pas compte que vous parlez à une daube en php :lol:

voila la fin de mapage forumdisplay.php par exemple :


$forumdisplay = stripslashes($forumdisplay);
echo $forumdisplay;

end_time();

eval("\$footer = \"".template("footer")."\";");
echo $footer;
?>



Je le place où moi le mysql_close() ? :roll:
 
WRInaute passionné
Americas a dit:
Je le place où moi le mysql_close() ? :roll:

Avant tout ça. Mais pas forcément juste avant. ;)
Sérieusement, le seul conseil sensé, c'est de le mettre dès que tu n'as plus besoin de la connexion, donc dès que tu ne fais plus de requêtes.

Fred
 
WRInaute accro
Je craque !!!!

Puisque c'est mon fichier config.php qui me connecte à la base... c'est dans ce fichier que je devrais mettre une commande de deconnexion, non ?

et si je rajoutais àa dans mon config ?

// disconnected timeout
$timeout = 60; // in seconds.. you can make it higher or lower.. i suggest keeping it at 1 minute
 
WRInaute passionné
Americas a dit:
Je craque !!!!

Mais non, mais non :D

Americas a dit:
Puisque c'est mon fichier config.php qui me connecte à la base... c'est dans ce fichier que je devrais mettre une commande de deconnexion, non ?

Non. Je vais me repéter, mais le mysql_close() doit être utilisé dès que tu n'as plus besoin de la connexion, donc dès que tu ne fais plus aucune requête SQL.

Exemple :

Code:
<?php
$db = mysql_connect('serveur', 'login', 'pass');
mysql_select_db('base', $db);

$sql = 'SELECT champ FROM table ORDER BY autreChamp';
$query = mysql_query($sql);

$sql2 = 'SELECT champ2 FROM table2 ORDER BY autreChamp2';
$query2 = mysql_query($sql2);

// je peux me deconnecter ici, j'ai fini mes requetes
mysql_close();

// maintenant je peux travailler sur mes résultats avec mysql_fetch_*
// etc.
?>

Bien sûr je me doute que ton forum doit être bien plus complexe, mais le principe est là : dès que j'ai fini les requêtes je peux me déconnecter.

Americas a dit:
et si je rajoutais àa dans mon config ?

// disconnected timeout
$timeout = 60; // in seconds.. you can make it higher or lower.. i suggest keeping it at 1 minute

A mon avis ça doit juste être un paramètre interne au script qui fait qu'au bout de ce temps, il s'arrête. Et donc la connexion se ferme automatiquement, comme en l'absence de mysql_close().
Ce qu'il te faut c'est surtout éviter que la connexion au serveur reste ouverte inutilement.

Fred
 
WRInaute accro
je vois ce que tu veux dire... mais comme tu le dis... le forum doit être bien plus complexe :?

bon... dans le message d'OVH ils me disent "ou alors votre traitement dure plus longtemps qu'il ne devrait"

Moi je ne voit aucun user connecté sur mon forum actuellement... donc le forum déconnecte automatiquement quand le type s'en va.

Je vais réduire le nombre de messages par page... le traitement devrait durer moins longtemps :roll:
 
J
JPC
Guest
heu, sinon, moi j'essaierais de le mettre qaund même là :
Code:
$forumdisplay = stripslashes($forumdisplay); 
echo $forumdisplay; 

mysql_close(); // <------------

end_time(); 

eval("\$footer = \"".template("footer")."\";"); 
echo $footer;

je pense que tu n'a pas de requête dans ton footer...
et ça limitera toujours quelques non deconnexions ...
Tu ne crois pas Fred ?
 
Discussions similaires
Haut