2010-07-16 86 views
3

我有一个长时间运行的php脚本,它基本上是一个监听事件(它是一个xmpp bot)的无限循环,我用nohup php bot.php &开始脚本。检查mysql连接是否有效

脚本的原始结构是这样

$mysqli = mysqli_connect(...); 

while(1) { 
    if(event1) { 
     // do database action 
    } else if(event2) { 
     // non database action 
     echo "something"; 
    } 
} 

当我运行该脚本,一切工作正常开始。当我几个小时后回来时,如果我发出event2但是发出事件1时发生数据库相关错误(PHP致命错误:调用在线非对象上的成员函数bind_param()n)

如何保持mysql连接有效,或者有办法检查mysqli连接是否有效,这样我就可以重新连接了吗?

回答

5
+3

谢谢,mysqli_ping工作。我想补充一点,我必须在我的php.ini中添加mysqli.reconnect = On,以便在关闭时自动重新建立连接。 (注意:ini_set在这种情况下不起作用!!) – Gunjan 2010-07-20 08:06:13

+0

@Gunjan非常感谢您的评论 - 它帮助我解决了我的问题。我添加的php.ini指令是'mysqli.reconnect =“1”',并且不需要在代码中添加'$ mysqli-ping()'。 – user1477388 2014-06-15 10:51:08