[PHP] Pb de session : "has already more than max_user_connection"

Pb de session : "has already more than max_user_connection" [PHP] - PHP - Programmation

Marsh Posté le 07-07-2003 à 18:12:34    

Salut à tous,
 
Voilà j'ai un problème que je n'arrive absolument pas à regler car je ne sais pas d'ou est-ce qu'il provient.
J'ai fait une partie administraiton pour mon site pour pouvoir géré le site sans avoir acces au ftp, enfin bref...
 
En local je n'es aucun problème, tout marche parfaitement mais quand je teste ma partie administration  sur internet, elle va marché pendant quelques "actions" je vais pouvoir ajouter des articles, faire quelques modifs et après ce message arrive :
 
Warning: User ?????@unix1.xelacom.net has already more than 'max_user_connections' active connections in /......./httpdocs/administration/verifsession.php on line 13
Impossible de se connecter à la base de données
 
J'ia caché certaines informations par les ?? et ... vous savez pourquoi ;)
 
Mon lancement de Session se fait en gros de cette facon :
Une page acces.php :
On entre son nom et mdp, puis on valide, dans la BD MySql on verifie que les infos sont bonnes.
 
Voilà le code pour la session :
 

Citation :


Function start_session($localhost, $login, $mot, $dbName, $dblink, $pseudo, $motdepasse)
{
 Global $session, $user_niv;
 $pseudo = trim($pseudo);
 $pass = trim($motdepasse);
 $tableverif = "utilisateurs";
 $verif = "SELECT niveau FROM $tableverif WHERE pseudo='$pseudo' AND pass='$motdepasse'";
 $resultverif = @mysql_db_query($dbName, $verif);
 $numrow = mysql_num_rows($resultverif);
 if ($numrow == 1)
 {
  $Pool = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789";
  $lastChar = strlen($Pool) - 1;
  srand(time());
  for($i = 0; $i < 20; $i++)
  {
   $session .= $Pool[rand(0, $lastChar)];
  }
  $date = time() + 3600;
  $startses = "UPDATE $tableverif SET session = '$session', date = '$date' WHERE pseudo like '$pseudo'";
  if ($res = mysql_query($startses))
  {
   $r_user = mysql_query("select niveau from $tableverif where pseudo like '$pseudo'" );
   $r = mysql_fetch_array($r_user);
   $user_niv = $r["niveau"];
  }
  else
  {
   echo "Un incident grave c'est produit<BR>La commande n'a pas abouti";
   exit();
  }
 }
 else
 {
   echo "Login ou mot de passe incorrect<BR>La commande n'a pas abouti";
   exit();
 }
}


 
Donc si c'est bon la session est bien créer j'accede a une page console.php ou j'ai fait un menu pour els différentes rubriques de mon site, passons....
 
A chaque page de mon adminsitration je fais le test de validité de la session en appellant la page verifsession.php :
 

Citation :


<?php
if (!isset($session))
{        
echo "<br><br>Accès refusé ";
        exit();
}
else
{
$localhost = "blabla";
$login = "blabla";
$mot = "blabla";
$dbName = "blabla";
$dblink = mysql_pconnect($localhost,$login,$mot) or die("Impossible de se connecter à la base de données" );  @mysql_select_db("$dbName" ) or die("Impossible de se connecter à la base de données" );
$tableverif = "utilisateurs";
$resultverif = @mysql_query("SELECT pseudo, niveau, date, email FROM $tableverif WHERE session='$session'" );
if ($numrow = mysql_num_rows($resultverif) == 0)
{
echo "<br><br>Accès refusé ";
exit();
}        
$res = mysql_fetch_array($resultverif);        
$current_date = time();        
$date_limit = $res["date"] + 3600;
if (($current_date > $date_limit) or !(in_array($res["niveau"],$niveau)))
{
echo "<br><br>Accès refusé ";
exit();
}
}
$pseudo = $res["pseudo"];
$email = $res["email"];
?>


 
 
Par pitié dites moi que vous avez la soluce (pb dans mes ficiers, pb dut a l'hebergeur, utiliser une autre methode pour les sessions ?)
 
Merci d'avance les gars !

Reply

Marsh Posté le 07-07-2003 à 18:12:34   

Reply

Marsh Posté le 07-07-2003 à 18:26:23    

c'est que tu as trop de connection simultanées.
utilise plutot  mysql_connect au lieu de  mysql_pconnect et ensuite deconnecte toi de la base avec mysql_close() aprés ta derniere requete.
 


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 07-07-2003 à 18:33:13    

Je vais tester avec cette commande alors, mais c'est bizarre car dans l'administration je suis le suel conencté et le site n'étant pas encore ouvert il n'y a perosnne qui le visite et ausis bien je vais pouvoir faire kelkes actions pendant 5 minutes et d'un coup le message et la je peux plus acceder a la BD pendant facil 10-15minutes :(
 

Reply

Marsh Posté le 07-11-2003 à 17:51:55    

forummp3 a écrit :

c'est que tu as trop de connection simultanées.
utilise plutot  mysql_connect au lieu de  mysql_pconnect et ensuite deconnecte toi de la base avec mysql_close() aprés ta derniere requete.


 
 
je vois pas le rapport avec l'utilisation d'une connexion persistante ou pas..  :heink:  
 
au contraire si tu te connectes et deconnectes toutes les 2 minutes, vaut mieux utiliser une connexion persistante..
enfin.. surtout si le gars n'utilise qu'une seule conneksion differente [:sinclaire]

Reply

Marsh Posté le 07-11-2003 à 17:56:52    

Au fait, tu utilises pas session_start, session_register et tout et tout? :??:

Reply

Marsh Posté le 07-11-2003 à 18:03:05    

jsuis fatigué ce soir
[:neowen]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed