Tengo este error debajo en un sitio que estoy ejecutando. No entiendo por qué es así, ya que funciona bien en mi servidor local. ¿Tiene algo que ver con el anfitrión? Estoy en un servidor Unix.Error de MYSQLi: el usuario ya tiene más conexiones activas de 'max_user_connections'
Warning: mysqli::mysqli() [mysqli.mysqli]: (42000/1203): User dbo343879423 already has more than 'max_user_connections' active connections in /homepages/9/d322397966/htdocs/dump/models/class_database.php on line 11
Connect failed: User dbo343879423 already has more than 'max_user_connections' active connections
Warning: mysqli::close() [mysqli.close]: Couldn't fetch mysqli in /homepages/9/d322397966/htdocs/dump/models/class_database.php on line 160
el error dice 'dbo343879423 usuario ya tiene más de '' conexiones activas en /homepages/9/d322397966/htdocs/dump/models/class_database.php en la línea 11' max_user_connections, por lo que esta es la línea 11 en el guión: ¡no veo nada malo!
$this -> connection = new mysqli($hostname,$username,$password,$database);
a continuación es la clase entera en class_database.php, ¿es malo en otra parte del guión y que debería cambiar?
<?php
#connects the database and handling the result
class __database {
protected $connection = null;
protected $error = null;
#make a connection
public function __construct($hostname,$username,$password,$database)
{
$this -> connection = new mysqli($hostname,$username,$password,$database);
if (mysqli_connect_errno())
{
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
}
#fetches all result rows as an associative array, a numeric array, or both
public function fetch_all($query)
{
$result = $this -> connection -> query($query);
if($result)
{
return $result -> fetch_all(MYSQLI_ASSOC);
}
else
{
$this -> error = $this -> connection -> error;
return false;
}
}
#fetches a result row as an associative array, a numeric array, or both
public function fetch_assoc_while($query)
{
$result = $this -> connection -> query($query);
if($result)
{
while($row = $result -> fetch_assoc())
{
$return_this[] = $row;
}
if (isset($return_this))
{
return $return_this;
}
else
{
return false;
}
}
else
{
$this -> error = $this -> connection -> error;
return false;
}
}
#fetch a result row as an associative array
public function fetch_assoc($query)
{
$result = $this -> connection -> query($query);
if($result)
{
return $result -> fetch_assoc();
}
else
{
$this -> error = $this -> connection -> error;
return false;
}
}
#get a result row as an enumerated array
public function fetch_row($query)
{
$result = $this -> connection -> query($query);
if($result)
{
return $result -> fetch_row();
}
else
{
$this -> error = $this -> connection -> error;
return false;
}
}
#get the number of rows in a result
public function num_rows($query)
{
$result = $this -> connection -> query($query);
if($result)
{
return $result -> num_rows;
}
else
{
$this -> error = $this -> connection -> error;
return false;
}
}
#performs a query on the database
public function query($query)
{
$result = $this -> connection -> query($query);
if($result)
{
return $result;
}
else
{
$this -> error = $this -> connection -> error;
return false;
}
}
#escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection
public function real_escape_string($string)
{
$result = $this -> connection -> real_escape_string($string);
if($result)
{
return $result;
}
else
{
$this -> error = $this -> connection -> error;
return false;
}
}
#display error
public function get_error()
{
return $this -> error;
}
#closes the database connection when object is destroyed.
public function __destruct()
{
$this -> connection -> close();
}
}
?>
o debería simplemente cambiar el host para siempre! ??
a continuación es la implementación de la clase de conexión de la base de datos. Si quito esta parte, el error ya no aparecerá, pero también hago lo mismo en otras partes del sitio y ¡no causarán ningún problema!
<!-- side-video-library -->
<div id="side-video-library" class="round-corner">
<h4><a href="<?php echo HTTP_ROOT;?>videos"><span>ENER VIDEO LIBRARY</span></a></h4>
<?php
$sql = "
SELECT *
FROM root_pages
WHERE root_pages.parent_id = '8'
AND root_pages.pg_highlight = '1'
AND root_pages.pg_hide != '1'
ORDER BY rand() DESC
LIMIT 1
";
#instantiate the object of __database class
$object_item = new __database(DB_HOST,DB_USER,DB_PASS,DB_NAME);
$item = $object_item -> fetch_assoc($sql);
#instantiate the object of __database class
$object_item_num = new __database(DB_HOST,DB_USER,DB_PASS,DB_NAME);
$total_item = $object_item_num -> num_rows($sql);
//echo $total_item;
?>
<?php
if ($total_item > 0)
{
$sql = "
SELECT *
FROM root_tagged
LEFT JOIN root_tags ON (root_tags.tag_id = root_tagged.tag_id)
WHERE root_tagged.pg_id = '".$item['pg_id']."'
";
#instantiate the object of __database class
$object_tagname = new __database(DB_HOST,DB_USER,DB_PASS,DB_NAME);
$item_tagname = $object_tagname -> fetch_assoc($sql);
#instantiate the object of __database class
$object_tagname_num = new __database(DB_HOST,DB_USER,DB_PASS,DB_NAME);
$total_tagname = $object_tagname_num -> num_rows($sql);
?>
<p class="item-video">
<object style="width: 183px; height: 151px;" width="183" height="151" data="http://www.youtube.com/v/<?php echo get_video_id($item['pg_content_1']) ;?>" type="application/x-shockwave-flash">
<param name="wmode" value="transparent" />
<param name="src" value="http://www.youtube.com/v/<?php echo get_video_id($item['pg_content_1']) ;?>" />
</object>
</p>
<h3><a href="<?php echo HTTP_ROOT.str_replace(' ', '-', 'videos').'/'.$item_tagname['tag_name'].'/'.str_replace(' ', '-', strtolower($item['pg_url']));?>"><?php if(strlen($item['pg_title']) > 20) echo substr($item['pg_title'], 0,20).'...'; else echo $item['pg_title'];?></a></h3>
<p class="item-excerpt-video"><?php if(strlen($item['pg_content_2']) > 100) echo substr($item['pg_content_2'], 0,100).'...'; else echo $item['pg_content_2'];?></p>
<a href="<?php echo HTTP_ROOT;?>videos" class="button-arrow"><span>More</span></a>
<?php
}
?>
</div>
<!-- side-video-library -->
¿He estado implementando la clase incorrectamente?
gracias.
¿qué versión de PHP está usando su host? Los destructores solo son compatibles a partir de PHP5 –
, es PHP 5 ... ¡gracias! – laukok
No confío en GC ... invocar destrucción manual cuando termine de usar la clase –