PDO::ATTR_PERSISTENT - всегда true

berkut

Новичок
PDO::ATTR_PERSISTENT - всегда true

что за дела, конекчусь так:
PHP:
new PDO("mysql:dbname={$this->db_name};host={$this->host};port={$this->port}", $this->user, $this->pass, array(PDO::ATTR_PERSISTENT=>false));
у меня постоянно через некоторое время при конекте вылетает too many connections. как-будто постоянное соединение создаёт.
вывожу:
$this->getAttribute(PDO::ATTR_PERSISTENT); - (bool) false
 

crocodile2u

http://vbolshov.org.ru
too many connections может вылететь и не при персистент-коннектах, и это, очевидно, как раз твой случай. Ведь если ты создаешь НЕ-персистент-коннект, то он ведь не создастся святым духом.

см. SHOW PROCESSLIST;

И, кстати, случайно не шаред-хост?
 

berkut

Новичок
так нет, на локалке вообще тестирую. я тут совсем один. я нашёл у себя один баг - вместо 1-го соединения скрипт делал 25 коннектов. на mysql_connect() такое не прокатило-бы, а тут всё необычно. но, в max_connections у меня 100. я запускаю скрипт 4 раза, на пятый пишет - too many connections. т.е. скрипт однозначно дохнет, не висит. паралельно его не запускаю, так почему-же висят коннекты - не понятно.
смотрю в открытые порты - там туча апачей - с чего-бы. всё выгружаю, запускаю снова - всегда на 5-м рефреше лимит кончается. жду время - никто не дохнет
 

berkut

Новичок
оно мне ничё не говорит. пхп модулем, соответственно конект держит апач. на каждый запуск скрипта - 25 конектов создаётся - но почему они не дохнут после выполнения, как-будто это persistent
 

crocodile2u

http://vbolshov.org.ru
может быть, дело в блокировке каких-либо файлов? в общем, решишь проблему "неубитых" апачей - решишь проблему коннектов к БД.
 

berkut

Новичок
так оно и есть. скрипт сдох, апач висит и держит конекты. processlist показывает тучу sleep на моей бд

-~{}~ 18.05.08 22:00:

может быть, дело в блокировке каких-либо файлов
каких и как? я ставлю die('сдохли')
выводит это. после die хоть 100 блокировок он должен сдохнуть(скрипт). если конект не persistent, то даже если чайлд апача не дохнет, php должен прибить коннект

-~{}~ 18.05.08 22:12:

не, ну галимый перзистент. с чистого запускаю 1 коннект. скрипт здох - в processlist он висит. запускаю ещё раз - используется тоже(предыдущее) соединение. запускаю 2 соединения - в процесс вися 2 соединения. отрубаю апач. жду. процесса апача нет. в processlist всё висит коннект
 

crocodile2u

http://vbolshov.org.ru
Скрипт не запускает никаких других процессов в фоновом режиме?
 

ys

отодвинутый новичок
berkut

Может попробовать keep-alive пристрелить?
 

berkut

Новичок
Может попробовать keep-alive
а зачем? чайлд апача сам по себе не обязан дохнуть после каждого запроса, у него ж схема такая.
зачем? манул гласит, что по завершении _скрипта_, соединение рвётся, если только не перзистент. ну попробывал я вручную убивать объект пдо, толку никакого.
 

crocodile2u

http://vbolshov.org.ru
berkut
Проверь деструкторы, shutdown_function - все, что может выполняться после die('сдохли') - может быть, там какой-то бесконечный цикл или еще какая-то фигня.
 
Сверху