0

我的 php 脚本等待远程门响应,通常为约 20 秒。它会导致 apache httpd 线程在打开 MySQL 连接的情况下驻留在内存中,并最终超过 MaxClients 值。如何管理以释放空闲资源,直到远程门响应。

一种解决方案是:1)运行远程门请求,然后将用户重定向到刷新到某些 url 测试数据的页面,2)在 nginx 配置文件中写入该 url 的规则:如果存在特定文件,则运行 apache 以提供数据 else show刷新页面。3) 远程门请求将数据保存在文件中

因此,我们从向远程门发出请求的脚本中取消了 apache 的链接,我们可以使其尽可能小。远程请求时,服务器仅由该脚本和来自 nginx 的轻请求使用。

所以这可能是一个很好的解决方案,但我想知道这种方法的缺点。并且可能有更好的方法。

4

1 回答 1

0

好吧,您可以在等待远程门响应时关闭您的 MySQL 连接。

mysql_close($link);

然后在收到回复后重新打开它:

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');

如果您只需要在远程门响应之前或之后才需要 MySQL 连接,我建议您只在正确的位置建立一次 MySQL 连接。

一般来说 mysql_connect() 有点贵。但是与您的响应需要的 20 秒相比,这绝对是便宜的。

于 2010-07-22T17:21:19.320 回答