pdoexception

sQula

Пляшущий с бубном
VIP
#1
Беда в чем, при потере конекта сайта к бд сервера, вылезает ошибка
куда копать, и что писать:D
дабы данные кэшировались, и сайт не падал при потери конекта.
Код:
PDOException in Connector.php line 47:
SQLSTATE[HY000] [1044] Access denied for user '****'@'localhost' to database '******'
Код:
	public function createConnection($dsn, array $config, array $options)
	{
		$username = array_get($config, 'username');

		$password = array_get($config, 'password');

		return new PDO($dsn, $username, $password, $options);
	}
 

Logan22

Свой человек
Проверенный
#3
дабы данные кэшировались, и сайт не падал при потери конекта.
тогда лучше писать на чистом Go, и не юзать вонючий Laravel. Если ты думаешь что таким способом выиграешь в производительности, то ошибаешься, ты уже проиграл в производительности ещё до старта гонки.
Вообще для начала проверь правильная ли структура в $dns, а во вторых проверь привилегии пользователя в MySQL.
 

ArtToKill

Местный житель
Партнер
#4
тогда лучше писать на чистом Go, и не юзать вонючий Laravel. Если ты думаешь что таким способом выиграешь в производительности, то ошибаешься, ты уже проиграл в производительности ещё до старта гонки.
Вообще для начала проверь правильная ли структура в $dns, а во вторых проверь привилегии пользователя в MySQL.
почему Laravel то вонючий????
 

Desquire

Поклонник кармы
Партнер
#5
тогда лучше писать на чистом Go, и не юзать вонючий Laravel. Если ты думаешь что таким способом выиграешь в производительности, то ошибаешься, ты уже проиграл в производительности ещё до старта гонки.
Вообще для начала проверь правильная ли структура в $dns, а во вторых проверь привилегии пользователя в MySQL.
Тс - ты хочешь исправить продлему, или ее избежать? Это коннент к какой бд? Основной блок сайта или екстернал сервер?

Ну не скажи, уверен все проблемы в правильности использования.

Первый запрос в гугле, и увидел что можно связать лару и варниш без особых проблем, в итоге до 100 мс будет возвращаться страница.
Часто легче исаолиспольз уже готоаыг решения... Зависит от бюджета и хотелки
 

sQula

Пляшущий с бубном
VIP
#6
тогда лучше писать на чистом Go, и не юзать вонючий Laravel. Если ты думаешь что таким способом выиграешь в производительности, то ошибаешься, ты уже проиграл в производительности ещё до старта гонки.
Вообще для начала проверь правильная ли структура в $dns, а во вторых проверь привилегии пользователя в MySQL.
тут не в привилегиях дело, это соединение именно с базой сервера, для регистрации акк+статус сервера, если она не доступна сайт падает с данной ошибкой.

Тс - ты хочешь исправить продлему, или ее избежать? Это коннент к какой бд? Основной блок сайта или екстернал сервер?

Ну не скажи, уверен все проблемы в правильности использования.

Первый запрос в гугле, и увидел что можно связать лару и варниш без особых проблем, в итоге до 100 мс будет возвращаться страница.
Часто легче исаолиспольз уже готоаыг решения... Зависит от бюджета и хотелки
данную cms писал не я, и я не особо разбираюсь в этом) готов на платной основе на допил данного продукта.
 

Logan22

Свой человек
Проверенный
#7

Logan22

Свой человек
Проверенный
#8
Как-то так должно быть, дальше делай под себя.
PHP:
    public function createConnection($dsn, array $config, array $options){
        $username = array_get($config, 'username');
        $password = array_get($config, 'password');
        try {
            return new PDO($dsn, $username, $password, $options);
        } 
        catch (Throwable $t) {
            // Для пыха 7 
            echo 'Нет соденинения с БД...';
        } catch (Exception $e) {
            // Для пыха 5
            echo 'Нет соденинения с БД...';
        } 
    }
 

sQula

Пляшущий с бубном
VIP
#9
Как-то так должно быть, дальше делай под себя.
PHP:
    public function createConnection($dsn, array $config, array $options){
        $username = array_get($config, 'username');
        $password = array_get($config, 'password');
        try {
            return new PDO($dsn, $username, $password, $options);
        } 
        catch (Throwable $t) {
            // Для пыха 7 
            echo 'Нет соденинения с БД...';
        } catch (Exception $e) {
            // Для пыха 5
            echo 'Нет соденинения с БД...';
        } 
    }
PHP:
		    public function createConnection($dsn, array $config, array $options){
        $username = array_get($config, 'username');
        $password = array_get($config, 'password');
        try {
            return new PDO($dsn, $username, $password, $options);
			} 
			catch (Exception $e) {
            echo 'Нет соденинения с БД...';
        } 
    }
что-то не прокатило, ошибка таже
 

sQula

Пляшущий с бубном
VIP
#10
Хотя возможно кеш виноват.

p.s не, не он.
не прокатило
 

Desquire

Поклонник кармы
Партнер
#11
Попробуй
catch( PDOException $е) {
 

sQula

Пляшущий с бубном
VIP
#12
PHP:
	public function createConnection($dsn, array $config, array $options)
	{
		$username = array_get($config, 'username');
		
		$password = array_get($config, 'password');
	try {
			return new PDO($dsn, $username, $password, $options);
		} 
		catch (PDOException $е) 
		{
			echo 'Нет соденинения с БД...';
		} 
	}
и так не прокатило(
 

sQula

Пляшущий с бубном
VIP
#13
может вообще не тут копаю?
Screenshot_2.jpg
Screenshot_1.jpg
 

Desquire

Поклонник кармы
Партнер
#14
Попробуй так.
PHP:
 public function createConnection($dsn, array $config, array $options)
    {
        $username = array_get($config, 'username');
      
        $password = array_get($config, 'password');
    try {
            $pdo = new PDO($dsn, $username, $password, $options);
return $pdo;
        }
        catch (PDOException $е)
        {
            echo 'Нет соденинения с БД...';
            die(); // тут должно выкинуть.
        }
    }
Но даже если заведется, то это просто костылише.
Если хочешь могу рассказать как переделать.
 

Logan22

Свой человек
Проверенный
#15

sQula

Пляшущий с бубном
VIP
#16
Попробуй так.
PHP:
 public function createConnection($dsn, array $config, array $options)
    {
        $username = array_get($config, 'username');
      
        $password = array_get($config, 'password');
    try {
            $pdo = new PDO($dsn, $username, $password, $options);
return $pdo;
        }
        catch (PDOException $е)
        {
            echo 'Нет соденинения с БД...';
            die(); // тут должно выкинуть.
        }
    }
Но даже если заведется, то это просто костылише.
Если хочешь могу рассказать как переделать.
не прокатило:(
 

Desquire

Поклонник кармы
Партнер
#17
А в чем фокус?)
Выделили память на переменную которую сразу же и возвращаем! xD
Магия пхп.
Дак а чё у него ексепшн не ловит?
Я хз.
+ 7+ пхп уже не такой тупой)
То что z выделил, и вернул, то пыха просто работает с ссылкой в памяти, и это только тут выглядит как костыль полный, под капотом чуть умнее работает)
 
Сверху Снизу