Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: pdo есть ли решение для постоянного соединения?
Форумы портала PHP.SU » » Работа с СУБД » pdo есть ли решение для постоянного соединения?

Страниц (1): [1]
 

1. sc2r2bey - 27 Апреля, 2013 - 11:01:51 - перейти к сообщению
создаю постоянное соединение:
PHP:
скопировать код в буфер обмена
  1. $DBH = new PDO("mysql:host={$config['db_host']};dbname={$config['db_base']}", $config['db_user'], $config['db_password'], array(PDO::ATTR_PERSISTENT => true));
  2. $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );  

через некоторое время выскакивает следующая ошибка:
Цитата:
Warning: PDO::__construct(): MySQL server has gone away in

есть ли способ избежать ее?
2. caballero - 27 Апреля, 2013 - 11:08:24 - перейти к сообщению
убери его нафиг. Пользы с этого постоянного соединения никакой все равно
3. sc2r2bey - 27 Апреля, 2013 - 11:28:55 - перейти к сообщению
[quote=caballero][/quote]почему?
4. caballero - 27 Апреля, 2013 - 11:36:55 - перейти к сообщению
потому что получаешь gone away
5. esterio - 27 Апреля, 2013 - 12:13:44 - перейти к сообщению
sc2r2bey
http://www.siteandweb.ru/mysql_pconnect.html
Вот здесь лучше описано
http://www.php.net/manual/ru/fea...-connections.php

Цитата:
Следует заметить, что этот подход имеет некоторые недостатки: если вы используете базу данных с ограниченным количеством возможных подключений, оно может быть превышено количеством запрашиваемых дочерними процессами постоянных соединений. Например, если ваша база данных позволяет 16 одновременных соединений, и во время нагрузки на сервер 17 дочерних процессов попробуют открыть соединение, одна из попыток потерпит неудачу. Если в вашем коде содержатся ошибки, не позволяющие закрывать соединение (например, бесконечные циклы), база данных с 32 одновременными подключениями вскоре может оказаться заблокированной. Информацию о том, как обрабатывать открытые и неиспользумые соединения, вы можете найти в документации к вашей базе данных

Есть еще два дополнительных предостережения, которые следует помнить при работе с постоянными соединениями. В случае, если скрипт блокирует таблицу и по каким-либо причинам не может ее освободить, при использовании постоянного соединения все последующие скрипты, которые используют это соединение будут блокированы бесконечно долго и могут потребовать рестарта веб-сервера или сервера баз данных. Второе предостережение заключается в том, что открытые транзакции, если они не были закрыты до завершения работы скрипта, будут продолжены в следующем скрипте, использующем это же постоянное соединение. Исходя из этого, вы можете использовать функцию register_shutdown_function() для указания простой функции, которая снимает блокировку таблиц или отката ваших транзакций. Еще лучше избежать этих проблем полностью, не используя постоянные соединения в скриптах, которые используют блокировку таблиц или транзакции (при этом вы все еще можете использовать их где-то в другом месте).
6. LIME - 27 Апреля, 2013 - 12:22:18 - перейти к сообщению
esterio это не ты написал?))))
7. esterio - 27 Апреля, 2013 - 12:26:25 - перейти к сообщению
нет конешно а что такое? да знаю что не суть в процесах, а в том что позьзователь зачастую не выходит а просто закривает браузер. при постоянном соединении мы получим заполнение максимального количества одновременных соединений с мускулем. вот и вся беда.
8. sc2r2bey - 27 Апреля, 2013 - 12:27:30 - перейти к сообщению
[quote=esterio][/quote] Не понял и как это с PDO соотноситься?
9. esterio - 27 Апреля, 2013 - 12:31:54 - перейти к сообщению
sc2r2bey пишет:
и как это с PDO соотноситься?

Обновил пост

 

Powered by ExBB FM 1.0 RC1