首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >持久数据库连接未得到重用

问持久数据库连接未得到重用
EN

Stack Overflow用户
提问于 2013-08-25 03:23:08
回答 1查看 480关注 0票数 0

我在我的一个应用程序中使用phpgacl库进行授权。此库正在使用mysql_pconnect连接到数据库。问题是连接没有得到重用,有时整个应用程序会崩溃,错误是连接太多。我没有太多的并发用户,因此增加mysql中的最大连接数不会永久解决这个问题。我做了一个简单的测试来简化问题。我写了一个简单的php脚本/var/www/a.php

代码语言:javascript
复制
<?
mysql_pconnect('localhost', 'root', 'root');
?>

当我第一次点击localhost/a.php时,我在mysql processlist中看到一个到数据库的连接。当我第二次点击链接时,我希望这个连接会被重用。但是,事实并非如此。创建了一个新连接,我看到两个连接处于睡眠状态。每次我点击链接,计数都会增加。

当我重新启动apache时,所有这些连接都会关闭。

我想知道php mysql_pconnect是如何工作的,以及它是如何使用之前建立的mysql连接的。而且,为什么在我上面提到的例子中没有发生这种情况呢?

其中一条评论是here写的:

You are probably using a multi-process web server such as Apache. Since database connections cannot be shared among different processes a new one is created if the request happen to come to a different web server child process.

这是否意味着不推荐在apache中使用mysql_pconnect?

EN

回答 1

Stack Overflow用户

发布于 2013-08-25 03:52:59

每个DB连接都会随着php进程的结束而终止。因此,预计持久连接不会与其他web线程共享。mysql_pconnect只能在不同的类之间共享应用程序运行时的DB连接,即您的问题的解决方案是:

  1. 在MySQL中减少数据库连接的超时配置
  2. 关闭应用程序中的数据库连接
  3. 为数据库查询创建自己的守护程序(但它非常复杂)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18422263

复制
相关文章

相似问题

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