Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : MySQL Functions : mysql_ping

mysql_ping

Ping a server connection or reconnect if there is no connection (PHP 4 >= 4.3.0, PHP 5, PECL mysql:1.0)
bool mysql_ping ( [resource link_identifier] )

Example 1454. 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);
?>

Code Examples / Notes » mysql_ping

dustin hawkins

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....
?>


miro dot dietiker

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...


oscar

Very confusing description.
... If it has gone down, an automatic reconnection is attempted
(But the function returns only true or false, so if you have variable say $link = connection resource, it will be an invalid resource)
Then ...
... Note:  Since MySQL 5.0.13, automatic reconnection feature is disabled.
OK, if it returns false, I have the chance to reconnect updating my resource variable
$link = reconnect
But I did called the function with $link to do the check, so ...
If no such link is found, it will try to create one as if mysql_connect() was called with no arguments (this are  different arguments than automatic reconnection, doesn't it? I think, automatic reconnecting, say to $link, would be with its own arguments previously used to create the connection)
So bad decision about automatic recconection feature disabled ...
At least the function should have the param by reference, so in case it reconnects with a new link_identifier.
bool mysql_ping ( &[resource $link_identifier] )
Or a return value of link_identifier, not true.
if ($link=mysql_ping($link)) {...} else { whatever }


cybot2000

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.


vinicius

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.

Change Language


Follow Navioo On Twitter
mysql_affected_rows
mysql_change_user
mysql_client_encoding
mysql_close
mysql_connect
mysql_create_db
mysql_data_seek
mysql_db_name
mysql_db_query
mysql_drop_db
mysql_errno
mysql_error
mysql_escape_string
mysql_fetch_array
mysql_fetch_assoc
mysql_fetch_field
mysql_fetch_lengths
mysql_fetch_object
mysql_fetch_row
mysql_field_flags
mysql_field_len
mysql_field_name
mysql_field_seek
mysql_field_table
mysql_field_type
mysql_free_result
mysql_get_client_info
mysql_get_host_info
mysql_get_proto_info
mysql_get_server_info
mysql_info
mysql_insert_id
mysql_list_dbs
mysql_list_fields
mysql_list_processes
mysql_list_tables
mysql_num_fields
mysql_num_rows
mysql_pconnect
mysql_ping
mysql_query
mysql_real_escape_string
mysql_result
mysql_select_db
mysql_set_charset
mysql_stat
mysql_tablename
mysql_thread_id
mysql_unbuffered_query
eXTReMe Tracker