Код |
---|
$result=mysql_query("SHOW PROCESSLIST"); while ($row=mysql_fetch_array($result)) { $process_id=$row["Id"]; if ($process_id <> $this->db_Conn) //это чтобы не убить текущий коннект { if (($row["Time"] > 20 ) && ($row["Command"]=="Sleep") ) { //print $row[”Id”]; $sql="KILL ".$process_id." "; mysql_query($sql); } } } |
Цитата |
---|
Причина: спящие процессы появляются потому, что при коннекте к базе данных используется mysql_pconnect
"define("DBPersistent", true);", можно, конечно, отключить, но тогда нагрузка на сервак будет при постоянных коннектах к MySQL, отсюда возникает необходимость подчищать лишние коннекты(которые,между прочим, держат ресурсы сервера), почему до этого не додумались разработчики продукта - сие тайна . |
Цитата |
---|
Интересно а как вы понимаете смысл работы mysqlp_connect? Он и используется для того чтобы при повторном соединение не открывать коннект, соответственно и процессы должны ждать |