mysql_ping

(PHP 4 >= 4.3.0, PHP 5)

mysql_pingПроверяет соединение с сервером и пересоединяется при необходимости

Описание

bool mysql_ping ([ resource $link_identifier = NULL ] )

Проверяет работает ли соединение с сервером. Если оно утеряно, автоматически предпринимается попытка пересоединения. Эта функция может быть использована в скриптах, работающих на протяжении долгого времени.

Замечание:

Автоматическое восстановление соединения по умолчанию отключено в версиях MySQL > = 5.0.3.

Список параметров

link_identifier

Соединение MySQL. Если идентификатор соединения не был указан, используется последнее соединение, открытое mysql_connect(). Если такое соединение не было найдено, функция попытается создать таковое, как если бы mysql_connect() была вызвана без параметров. Если соединение не было найдено и не смогло быть создано, генерируется ошибка уровня E_WARNING.

Возвращаемые значения

Возвращает TRUE, если соединение в рабочем состоянии и FALSE в противном случае.

Примеры

Пример #1 Пример использования mysql_ping()

<?php
set_time_limit
(0);

$conn mysql_connect('localhost''mysqluser''mypass');
$db   mysql_select_db('mydb');

/* Подразумевается что этот запрос будет выполняться достаточно долго */
$result mysql_query($sql);
if (!
$result) {
    echo 
'Запрос #1 не удался, выходим.';
    exit;
}

/* Проверяем что соединение еще работает, если нет, соединяемся заново */
if (!mysql_ping($conn)) {
    echo 
'Соединение потеряно, выходим после запроса #1';
    exit;
}
mysql_free_result($result);

/* Соединение еще работает, выполняем еще один запрос */
$result2 mysql_query($sql2);
?>

Смотрите также

Коментарии

Is important to remember that if your first connection to mysql don't works, mysql_ping will always return true! So, if you want to check if mysql is connected, first of all you must check if mysql_connect do not returns false and then you can begin to check mysql_ping.
2004-03-16 09:35:00
http://php5.kiev.ua/manual/ru/function.mysql-ping.html
It should be noted that mysql_ping() seems to reset the error message on the server.
I used it to check whether the connection was still alive before reading the error message via mysql_error() and it always returned an empty string. Upon removing the connection check everything worked.
2005-05-25 19:44:23
http://php5.kiev.ua/manual/ru/function.mysql-ping.html
Автор:
When using the mysql_ping command under php 5.1.2 and mysql 5.0, I was having problems with the auto-reconnect "feature", mainly that when the connection was severed, a mysql_ping would not automatically re-establish the connection to the database.

The connection to the DB is dropped when the time without a query excedes the wait_timeout value in my.cnf. You can check your wait_timeout by running the query "SHOW VARIABLES;"

If you're having problems auto-reconnecting when the connection is dropped, use this code:

<?php

$conn 
mysql_connect('localhost','user','pass');
mysql_select_db('db',$conn);

if (!
mysql_ping ($conn)) {
   
//here is the major trick, you have to close the connection (even though its not currently working) for it to recreate properly.
   
mysql_close($conn);
   
$conn mysql_connect('localhost','user','pass');
   
mysql_select_db('db',$conn);
}

//run queries knowing that your connection is alive....

?>
2006-07-31 15:32:47
http://php5.kiev.ua/manual/ru/function.mysql-ping.html
When checking if a $resource works...
be prepared that mysql_ping returns NULL as long as $resource is no correct mysql resource.
<?php
$resource 
=NULL;
var_dump = @mysql_ping($resource);
# showing NULL
?>
This could be used to decide of a current $resource is a mysql or a mysqli connection when nothing else is available to do that...
2007-08-31 14:32:24
http://php5.kiev.ua/manual/ru/function.mysql-ping.html
Автор:
If you get 'error 2006: MySQL server has gone away' messages when running (really) long scripts, mysql_ping will help detecting the loss of the db-connection. This can happen, when 'wait timeout' is reached (MySQL default is 8 hours).
2009-02-03 13:15:09
http://php5.kiev.ua/manual/ru/function.mysql-ping.html
mysql_ping() is really helpful when you have this annoying error:

MYSQL Error 2006 Server has gone away

For CI users:
In 1.7.2 version of codeigniter, there is a function 

$this->db->reconnect() 

that uses mysql_ping() to reestablish the timed out connection.

This function is specially useful when developing social media sites that uses hundreds of connections to the db such asinserting or selecting.
2009-09-29 11:28:10
http://php5.kiev.ua/manual/ru/function.mysql-ping.html
Автор:
This function *does not* attempt to reconnect at this time.  It only tells you whether or not you currently *are* connected.

To actually reconnect, you will have to implement this yourself in a wrapper class.
2010-04-19 11:24:45
http://php5.kiev.ua/manual/ru/function.mysql-ping.html

    Поддержать сайт на родительском проекте КГБ