PHP 8.4.2 Released!

mysql_ping

(PHP 4 >= 4.3.0, PHP 5)

mysql_pingPing a server connection or reconnect if there is no connection

Увага

Це розширення застаріле, починаючи з PHP 5.5.0, та вилучене з PHP 7.0.0. Натомість використовуються розширення MySQLi або PDO_MySQL. Докладніше описано у керівництві MySQL: вибір API. Цю функцію можна замінити на:

Опис

mysql_ping(resource $link_identifier = NULL): bool

Checks whether or not the connection to the server is working. If it has gone down, an automatic reconnection is attempted. This function can be used by scripts that remain idle for a long while, to check whether or not the server has closed the connection and reconnect if necessary.

Зауваження:

Automatic reconnection is disabled by default in versions of MySQL >= 5.0.3.

Параметри

link_identifier

З'єднання MySQL. Якщо не задано, буде обрано останнє з'єднання, встановлене функцією mysql_connect(). Якщо з'єднатися не вдалось, функція спробує встановити нове, ніби викликавши функцію mysql_connect() без параметрів. Якщо з'єднання не вдалося знайти або встановити, буде виведено повідомлення рівня E_WARNING

Значення, що повертаються

Returns true if the connection to the server MySQL server is working, otherwise false.

Приклади

Приклад #1 A mysql_ping() example

<?php
set_time_limit
(0);

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

/* Assuming this query will take a long time */
$result = mysql_query($sql);
if (!
$result) {
echo
'Query #1 failed, exiting.';
exit;
}

/* Make sure the connection is still alive, if not, try to reconnect */
if (!mysql_ping($conn)) {
echo
'Lost connection, exiting after query #1';
exit;
}
mysql_free_result($result);

/* So the connection is still alive, let's run another query */
$result2 = mysql_query($sql2);
?>

Прогляньте також

add a note

User Contributed Notes 6 notes

up
3
cybot2000 at yahoo dot de
19 years ago
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.
up
3
alext at marketdream dot com dot mx
15 years ago
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.
up
3
Doug
14 years ago
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.
up
2
miro dot dietiker at md-systems dot ch
17 years ago
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...
up
2
dustin hawkins
18 years ago
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....

?>
up
2
vinicius at teracom dot com dot br
20 years ago
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.
To Top