我在使用PHP中的mysqli类时遇到了问题,但是我无法在任何地方找到答案。
在我的脚本中,一个类创建了一个mysqli连接,并在其函数中使用该连接。之后,这个脚本分叉。连接也被子进程使用,但当子进程终止时,父进程遇到连接关闭(MYSQL Server Has Gone Away)的问题。
在切换到mysqli之前(只是使用mysql),我仅仅调用mysql_ping来确保在父进程执行查询之前数据库连接存在。Mysqli有一个类似的ping函数,但如果连接丢失它实际上不会重新连接。我尝试使用mysqli.reconnect=ON全局设置,但没有成功(使用php.ini和ini_set)。
php mysql_connect函数允许您获取一个已存在的连接,因此,如果我使用的是mysql而不是mysqli,则可以在进程分叉之后直接在子进程中重用连接。但是mysqli似乎没有这样的功能...
我唯一能做的就是调用mysqli->ping(),如果返回false,则在父进程中重新连接到数据库。这非常低效,我很想弄清楚如何正确地使用mysqli(无需手动重新连接),而不必改回mysql..
有什么建议吗?