Как проверить, подключен ли PHP к базе данных уже?

В основном в псевдокоде я ищу что-то вроде

if (connected_to_any_database()) { // do nothing } else { mysql_connect(...) } 

Как реализовать

 connected_to_any_database() 

Вы пробовали mysql_ping () ?

Проверяет, работает ли соединение с сервером. Если он опустился, произойдет автоматическое повторное соединение.

Альтернативно, второй (менее надежный) подход будет:

 $link = mysql_connect('localhost','username','password'); //(...) if($link == false){ //try to reconnect } 

Обновление. Начиная с PHP 5.5, вместо этого используйте mysqli_ping () .

Попробуйте использовать функцию mysql_ping PHP:

 echo @mysql_ping() ? 'true' : 'false'; 

Вам нужно будет добавить «@», чтобы предположить, что MySQL Warnings вы получите для запуска этой функции без подключения к базе данных.

Есть и другие способы, но это зависит от кода, который вы используете.

mysql_ping

раньше … (я имею в виду где-то в другом файле, который вы не уверены, что вы включили)

 $db = mysql_connect() 

позже…

 if (is_resource($db)) { // connected } else { $db = mysql_connect(); } 

Барон Шварц пишет, что из-за условий гонки эта «проверка перед записью» является плохой практикой. Он защищает шаблон try / catch с reconnect в catch. Вот псевдокод, который он рекомендует:

 function query_database(connection, sql, retries=1) while true try result=connection.execute(sql) return result catch InactiveConnectionException e if retries > 0 then retries = retries - 1 connection.reconnect() else throw e end end end end 

Вот его полный блог: https://www.percona.com/blog/2010/05/05/checking-for-a-live-database-connection-considered-harmful/

 // Earlier in your code mysql_connect(); set_a_flag_that_db_is_connected(); // Later.... if (flag_is_set()) mysql_connect(....);