2010-11-01 6 views
0

J'essaie d'étendre la classe mysqli en php afin de créer une classe wrapper. Je voudrais que cette classe gère plusieurs connexions .. Je suis actuellement à un stade très précoce et ai rencontré un problème:Erreur de segmentation PHP mysqli

Auth Connected pas: 1 1045: Accès refusé pour l'utilisateur 'rootty' @ 'localhost' (en utilisant Mot de passe: OUI) segmentation fault

Il semble quand la deuxième connexion a une erreur une erreur de segmentation est une erreur correctement créée connexion .. mais

<?php 

class mysqli_ls extends mysqli 
{ 
    private $link = array(); 
    private $link_no = 0; 


/* ************************************************************ */ 

    public function __construct() 
    { 
    } 

/* ************************************************************ */ 

    public function open($host='', $user='', $pass='', $port='3306', $database='') 
    { 
     if (empty($host) || empty($user) || empty($pass) || empty($database)) 
     { 
     $this->error[] = "Missing required connection variables"; 
     return false; 
     } 

     $this->link_no++; 
     @$this->link[ $linkno ] = $this->connect($host, $user, $pass, $database, $port); 



     if ($this->connect_errno) 

     { 

     $this->error[] = $this->connect_errno .':'. $this->connect_error; 
     return false; 

     } 

     return $this->link_no; 
    } 
###### script test
#!/usr/bin/php 
<?php 

require_once('mysqli.class.php'); 
$_mysqli = new mysqli_ls; 

$_auth = $_mysqli->open('localhost','root','xx','3306','auth'); 
if ($_auth === false) print $_mysqli->get_last_error() ."\n"; 
else print 'Auth Connected no: '. $_auth ."\n"; 

$_trak = $_mysqli->open('localhost','root','sxx','3306','wlr_tracker'); 
if ($_trak === false) print $_mysqli->get_last_error() ."\n"; 
else print 'Trak Connected no: '. $_trak ."\n"; 
+0

Un Segfault il y a probablement un bogue dans le code C/C++ utilisé par mysqli. Je n'ai pas réussi à reproduire ce problème dans 5.3.3. – netcoder

Répondre

0

Je signalerais ceci aux PHP/mysqli devs. Un segment de script segfaulting est probablement un bogue interne que vous ne pouvez pas résoudre - bien qu'il soit possible de créer une solution de contournement, la bonne façon est de le faire corriger dans le code C.