Ошибка при запуске моего кода на удаленном сервере: пользователь root превысил значение max_user_connections
[Я использую hostinger в качестве хоста] У меня есть веб-страница, где я показываю результаты запроса, он работает локально, но когда я загружаю его в Интернет, я получаю сообщение об ошибке:
Обнаружение ошибки en la linea: 6 Ошибка: SQLSTATE[42000] [1226] Пользователь 'u749120824_root' превысил ресурс 'max_user_connections' (текущее значение: 3) Неустранимая ошибка: вызов функции-члена prepare() для не- объект в /home/u749120824/public_html/pags/ver_usuarios.php в строке 18
Вот несколько скриншотов Localhosted
class ComprobarUsuario extends Conexion{
public function ComprobarUsuario(){
parent::__construct();
}
public function Comprobar($nombre){
$sqlCU="SELECT * FROM admins WHERE NOMBRE=:nombre_usuario";
$resultCU=$this->con->prepare($sqlCU);
$resultCU->execute(array(":nombre_usuario"=>$nombre));
$NresultadosCU=$resultCU->fetch(PDO::FETCH_ASSOC);
if($NresultadosCU!=0){
return "admin";
}
}
}
Класс подключения:
class Conexion{
protected $con;
public function Conexion(){
try{
$this->con=new PDO("mysql:host=localhost;dbname=marisol","root","");
$this->con->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$this->con->exec("SET CHARACTER SET utf8");
return $this->con;
}
catch(PDOException $e){
echo "Ha habido un error en la linea: " . $e->getLine() . " Error: " . $e->getMessage();
}
}
}
1 ответ
Проблема в том, что ваш код создает новое соединение для каждого нового экземпляра ComprobarUsuario. Если вы используете аналогичный подход для других запросов, ваше приложение очень быстро превысит ограничение. Решение состоит в том, чтобы создать одно общее соединение для всех подклассов.
class Conexion{
protected static $con;
public function Conexion(){
try{
if (!self::$con) {
self::$con=new PDO("mysql:host=localhost;dbname=marisol","root","");
self::$con->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
self::$con->exec("SET CHARACTER SET utf8");
return self::$con;
}
} catch(PDOException $e){
echo "Ha habido un error en la linea: " . $e->getLine() . " Error: " . $e->getMessage();
}
}
}