mysql_ping

(PHP 4 >= 4.3.0,PHP 5)

mysql_pingPing 服务器连接或在没有连接的情况下重新连接

警告

此扩展在 PHP 5.5.0 中已弃用,并在 PHP 7.0.0 中移除。 应改用 MySQLiPDO_MySQL 扩展。 另请参见 MySQL:选择 API 指南。 此函数的替代方法包括

描述

mysql_ping(资源 $link_identifier = NULL): 布尔值

检查与服务器的连接是否有效。 如果连接已断开,则会尝试自动重新连接。 此函数可用于长时间处于空闲状态的脚本,以检查服务器是否已关闭连接并在必要时重新连接。

注意:

在 MySQL >= 5.0.3 版本中,默认情况下自动重新连接被禁用。

参数

link_identifier

MySQL 连接。 如果未指定链接标识符,则假定为 mysql_connect() 打开的最后一个链接。 如果找不到此类链接,它将尝试创建链接,就像 mysql_connect() 已使用不带参数的方式调用一样。 如果找不到或建立连接,则会生成 E_WARNING 级别的错误。

返回值

如果与服务器 MySQL 服务器的连接有效,则返回 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);
?>

另请参见

添加笔记

用户贡献的笔记 7 个笔记

3
cybot2000 at yahoo dot de
19 年前
需要注意的是,mysql_ping() 似乎会重置服务器上的错误消息。
我使用它来检查连接是否仍然有效,然后再通过 mysql_error() 读取错误消息,它始终返回空字符串。 删除连接检查后,一切正常。
3
alext at marketdream dot com dot mx
14 年前
mysql_ping() 在遇到以下烦人的错误时非常有用:

MYSQL 错误 2006 服务器已断开

对于 CI 用户
在 1.7.2 版本的 CodeIgniter 中,有一个函数:

$this->db->reconnect()

它使用 mysql_ping() 来重新建立超时连接。

此函数在开发使用数百个数据库连接的社交媒体网站时特别有用,例如插入或选择。
2
miro dot dietiker at md-systems dot ch
16 年前
当检查 $resource 是否有效时...
请做好准备,只要 $resource 不是正确的 mysql 资源,mysql_ping 就会返回 NULL。
<?php
$resource
=NULL;
var_dump = @mysql_ping($resource);
# 显示 NULL
?>
这可以用于确定当前的 $resource 是 mysql 还是 mysqli 连接,当没有其他方法可以做到这一点时...
2
Doug
14 年前
此函数目前 *不会* 尝试重新连接。 它只会告诉你当前是否 *已* 连接。

要实际重新连接,你必须在包装类中自己实现它。
2
dustin hawkins
18 年前
在 php 5.1.2 和 mysql 5.0 下使用 mysql_ping 命令时,我遇到了自动重新连接“功能”的问题,主要是连接断开时,mysql_ping 不会自动重新建立与数据库的连接。

当没有查询的时间超过 my.cnf 中的 wait_timeout 值时,与 DB 的连接会断开。 你可以通过运行查询“SHOW VARIABLES;”来检查你的 wait_timeout。

如果在连接断开时遇到自动重新连接问题,请使用以下代码:

<?php

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

if (!
mysql_ping ($conn)) {
// 这里的主要技巧是,你必须关闭连接(即使它目前不起作用),才能让它正确地重新创建。
mysql_close($conn);
$conn = mysql_connect('localhost','user','pass');
mysql_select_db('db',$conn);
}

// 运行查询,确保连接有效....

?>
2
vinicius at teracom dot com dot br
20 年前
重要的是要记住,如果你的第一个 mysql 连接不起作用,mysql_ping 将始终返回 true! 因此,如果你想检查 mysql 是否已连接,首先必须检查 mysql_connect 是否没有返回 false,然后才能开始检查 mysql_ping。
-3
luky37
15 年前
如果你在运行(非常)长的脚本时收到“错误 2006:MySQL 服务器已断开”消息,mysql_ping 将有助于检测数据库连接的丢失。 当达到“等待超时”时,就会发生这种情况(MySQL 默认值为 8 小时)。
To Top