我读了PHP的函数的mysql_pconnect规范。"mysql_pconnect是指即使完成脚本练习,也不会关闭与SQL server的连接“。
除非关闭连接,否则连接会一直存在,直到mysql重新启动时才会出现连接吗?
发布于 2009-04-02 02:24:16
我想,也许我错了,但是...
我认为pconnect是一个持久连接,它不是为了运行脚本而保持的,而是在connection / MySQL会话期间保持的,无论运行哪个脚本,都有一个由PHP维护的套接字连接。这有点像在word中打开多个文档,而不是运行记事本的多个实例。通过使用公共数据库链接,不需要用于创建单独链接的处理能力。
然而,在阅读之后,我认为它似乎只有在PHP作为Apache模块运行时才有好处,而不是在CGI模式下运行。
告诉我我的错误信息。
发布于 2009-04-02 23:19:39
mysql_pconnect允许Apache的mod_php模块进行连接池。您仍然可以调用mysql_close,但是mod_php实际上不会关闭它;它只会使您的资源句柄无效。不幸的是,该模块没有对此进行任何配置,因此池连接由MySQL服务器通过其wait_timeout参数获取。它的默认值非常高,所以如果你想利用它,你可能会想要降低这个变量。
连接池节省了两件事:连接设置和MySQL线程创建。与其他数据库相比,MySQL的连接设置非常快,但高需求的网站仍然可以看到减少这一步的好处。在MySQL中创建线程的成本更多地依赖于底层操作系统,但对于繁忙的站点来说,这仍然是一件好事。
这两个方面都需要在网站速度和它对数据库的负载这一更大的图景中加以考虑。在使用连接池的足够繁忙的站点上,可能会耗尽数据库上的连接线程。还有一个方面是,您的应用程序需要尽最大努力使连接保持一致状态,因为您不能再依赖关闭连接来执行解锁表和回滚事务等操作。
在PHP documentation中有更多信息。
https://stackoverflow.com/questions/708015
复制相似问题