我的php脚本等待远程门响应,通常持续约20秒。它导致apache httpd线程通过打开的MySQL连接存在于内存中,最终超过MaxClients值。如何管理以释放空闲资源,直到远程门响应。
一个解决方案是: 1)运行远程门请求,然后将用户重定向到刷新到某些url测试数据的页面, 2)在nginx配置文件中为该url编写规则: 如果存在特定文件 然后运行apache来提供数据 其他显示刷新页面。 3)远程门请求将数据保存在文件中
因此,我们将apache从对远程门请求的脚本中取消链接,我们可以尽可能地使其变小。远程请求时,服务器仅由该脚本使用,并且来自nginx的轻量请求。
所以这可能是一个很好的解决方案,但我想知道这种方法的缺点。并且可能有更好的方法。
答案 0 :(得分:0)
好吧,您可以在等待远程门响应时关闭MySQL连接。
mysql_close($link);
然后在收到回复后重新打开它:
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
如果您只在远程门响应之前或之后需要MySQL连接,我建议只在正确的位置建立一次MySQL连接。
一般来说mysql_connect()有点贵。 但与你的响应所需的20秒相比,这绝对是便宜的。