relancer une connexion mysql

Répondre
Keika
le 24/06/2008 à 16:07
Keika
S'lu,

un soucis un peu particuliers cette fois. Pas relatif a un site, mais pour ceux qui connaissent, a un bot IRC.

Voila, ce bot utilise un code PHP et va chercher en base SQL diverses infos. Cependant il a la mauvaise habitude de se deconnecter toutes les X minutes, je pense a cause du timeout de connexion SQL. Maintenant j'aimerais entendre des avis sur comment relancer la connexion.

J'avais d'abords pense a faire une nouvelle connexion a chaque requete que le bot recoit, mais lorsque l'on sera 110 a demander des infos en meme temps, je pense que ca coincera.
Ensuite j'ai songe a faire un timeout en php, avec une variable $debut = microtime(true), $timeout = 10min et de verifier a chaque requete la diff entre $debut (stocke en varible de session ou en dur, me suis pas decide) et le microtime actuel. Mais l'autre mec qui bosse dessus me dit que ca prendra trop de ressource de laisser se deco et reco apres.
Lui propose de simplement lancer une petite requete sur une table ne contenant rien ou peu d'infos.

Donc voila, si vous avez une meilleure idee, ou l'Idee je suis preneur.

Merci d'avance
Le PHP --> C'est dur !
LupusMic
le 25/06/2008 à 01:45
LupusMic
Ce que tu peux faire, c'est modifier ta classe de gestion de la base de donnée pour en faire une version fainéante.

Par exemple :
<?php
class db
{
public $host ;
public $user ;
public $password ;
public $space ;
public $port ;
public $socket ;


protected $con ; // object that binds database

public function __construct($uri)
{
$params = $this->parse($uri) ;

$this->host = $param['host'] ;
/* transfert des paramètres du tableau vers l'objet
*/
$this->socket = $param['socket'] ;
}

public function query($sql)
{
$this->lazy_con() ;
$this->con->query($sql) ;
}

protected function lazy_con()
{
if($this->con)
{
//réactive la connection si elle est perdue
if(!$this->con->ping())
throw new exception($this->con->error) ;
}
else
$this->con = mysqli
( $this->host
, $this->username
, $this->password
, $this->space
, $this->port
, $this->socket) ;

if($this->con->connect_errno)
throw new exception($this->con->error) ;
}

public function parse($uri)
{
// transformation de l'uri en paramètres
return $params ;
}
}
?>
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours