首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP mysqli重新连接问题

PHP mysqli重新连接问题
EN

Stack Overflow用户
提问于 2009-09-23 21:22:52
回答 6查看 18.1K关注 0票数 14

我在使用PHP中的mysqli类时遇到了问题,而且我在任何地方都找不到答案。

在我的脚本中,一个类创建了一个mysqli连接,它在整个函数中都会使用这个连接。之后,此脚本将派生。连接也被子节点使用,但我遇到了这样的问题:当子节点死亡时,父节点中的连接被关闭(MYSQL Server已经消失)。

在我切换到mysqli (只使用mysql)之前,我只是调用了mysql_ping来确保在父进程中执行查询之前数据库连接已经存在。Mysqli具有类似的ping功能,但如果连接断开,它实际上不会重新连接。我尝试使用mysqli.reconnect=ON全局设置,但没有成功(使用php.ini和ini_set)。

php mysql_connect函数允许您获取一个已经存在的连接,所以如果我使用mysql而不是mysqli,我可以在进程派生之后立即在子进程中重用该连接。但是mysqli似乎没有这样的功能……

我唯一能做的就是调用mysqli->ping(),如果返回false,则重新连接到父数据库。这是非常低效的,我更愿意弄清楚如何正确地使用mysqli (并且不需要手动重新连接),而不是必须改回mysql。

有什么建议吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-09-24 07:18:21

mysqli_ping()的文档说,如果您将全局选项mysqli.reconnect设置为1(在您的php.ini中),那么当mysqli_ping()检测到连接已经断开时,它将重新连接。

更新:自从我在2009年回答这个问题以来,PHP在默认情况下主要使用mysqlnd驱动程序,而不是libmysql。正如在下面的评论中提到的,mysqlnd不支持mysqli_ping()函数,PHP开发人员根据他们在https://bugs.php.net/bug.php?id=52561中的"Won't Fix“答案故意这样做

因此,在PHP中似乎没有自动重新连接的解决方案。

票数 16
EN

Stack Overflow用户

发布于 2009-09-24 01:45:29

你可以尝试一些不同的东西..而不是ping ..试着发送一个非常简单的低强度查询,比如"select now()“,看看能不能得到更好的结果。

票数 0
EN

Stack Overflow用户

发布于 2009-09-24 07:39:23

你不能使用持久连接吗?另外,fork()真的有必要吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1468579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档