Просмотр полной версии : pdoexception
Беда в чем, при потере конекта сайта к бд сервера, вылезает ошибка
куда копать, и что писать
дабы данные кэшировались, и сайт не падал при потери конекта.
Код:
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);
}
Gaikotsu
30.10.2018, 19:57
try/catch и все такое во всех нужных местах - в соединении с бд и т.д.
дабы данные кэшировались, и сайт не падал при потери конекта.
тогда лучше писать на чистом Go, и не юзать вонючий Laravel. Если ты думаешь что таким способом выиграешь в производительности, то ошибаешься, ты уже проиграл в производительности ещё до старта гонки.
Вообще для начала проверь правильная ли структура в $dns, а во вторых проверь привилегии пользователя в MySQL.
Desquire
30.10.2018, 21:47
тогда лучше писать на чистом Go, и не юзать вонючий Laravel. Если ты думаешь что таким способом выиграешь в производительности, то ошибаешься, ты уже проиграл в производительности ещё до старта гонки.
Вообще для начала проверь правильная ли структура в $dns, а во вторых проверь привилегии пользователя в MySQL.
Тс - ты хочешь исправить продлему, или ее избежать? Это коннент к какой бд? Основной блок сайта или екстернал сервер?
Ну не скажи, уверен все проблемы в правильности использования.
Первый запрос в гугле, и увидел что можно связать лару и варниш без особых проблем, в итоге до 100 мс будет возвращаться страница.
Часто легче исаолиспольз уже готоаыг решения... Зависит от бюджета и хотелки
тогда лучше писать на чистом Go, и не юзать вонючий Laravel. Если ты думаешь что таким способом выиграешь в производительности, то ошибаешься, ты уже проиграл в производительности ещё до старта гонки.
Вообще для начала проверь правильная ли структура в $dns, а во вторых проверь привилегии пользователя в MySQL.
тут не в привилегиях дело, это соединение именно с базой сервера, для регистрации акк+статус сервера, если она не доступна сайт падает с данной ошибкой.
Тс - ты хочешь исправить продлему, или ее избежать? Это коннент к какой бд? Основной блок сайта или екстернал сервер?
Ну не скажи, уверен все проблемы в правильности использования.
Первый запрос в гугле, и увидел что можно связать лару и варниш без особых проблем, в итоге до 100 мс будет возвращаться страница.
Часто легче исаолиспольз уже готоаыг решения... Зависит от бюджета и хотелки
данную cms писал не я, и я не особо разбираюсь в этом) готов на платной основе на допил данного продукта.
если она не доступна сайт падает с данной ошибкой
Ну так бы сразу описал. Ну конечно, а как иначе, будет разумеется падать, делай проверку (http://php.net/manual/ru/language.exceptions.php)!
Как-то так должно быть, дальше делай под себя.
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
(
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
'Нет соденинения с БД...'
;
}
}
что-то не прокатило, ошибка таже
Хотя возможно кеш виноват.
p.s не, не он.
не прокатило
Desquire
30.10.2018, 23:10
Попробуй
catch( PDOException $е) {
Попробуй
catch( PDOException $е) {
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
'Нет соденинения с БД...'
;
}
}
и так не прокатило(
может вообще не тут копаю?
Desquire
31.10.2018, 00:08
Попробуй так.
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
(
)
;
// тут должно выкинуть.
}
}
Но даже если заведется, то это просто костылише.
Если хочешь могу рассказать как переделать.
PHP:
$pdo
=
new
PDO
(
$dsn
,
$username
,
$password
,
$options
)
;
return
$pdo
;
А в чем фокус?)
Выделили память на переменную которую сразу же и возвращаем! xD
Попробуй так.
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
31.10.2018, 16:45
А в чем фокус?)
Выделили память на переменную которую сразу же и возвращаем! xD
Магия пхп.
Дак а чё у него ексепшн не ловит?
Я хз.
+ 7+ пхп уже не такой тупой)
То что z выделил, и вернул, то пыха просто работает с ссылкой в памяти, и это только тут выглядит как костыль полный, под капотом чуть умнее работает)
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot