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