【发布时间】:2010-11-23 08:59:49
【问题描述】:
我是一个 PHP 新手,正在编写一些脚本来显示数据库中的一些新闻文章,并且想了解一些事情。
- 要打开与 MySQL 数据库的连接,
mysql_connect或mysql_pconnect哪个更好? - 使用持久连接到数据库有哪些优点或缺点?
- 在什么样的场景下会调用持久连接?
【问题讨论】:
我是一个 PHP 新手,正在编写一些脚本来显示数据库中的一些新闻文章,并且想了解一些事情。
mysql_connect 或 mysql_pconnect 哪个更好? 【问题讨论】:
如果您要编写网页,则不需要持久连接。它占用了太多资源。使用 mysql_connect。尽量减少数据库连接打开和不使用的时间。打开,获取你想要的,关闭。它不需要在用户阅读时保持打开状态。如果他们响应,最终将使用连接 - 插入/转到另一个页面..
Here 是关于 NOT USING 在 Web 应用程序中的持久连接的一些优点
当你锁定一个表时,通常在连接关闭时它会被解锁,但由于持久连接不会关闭,任何表你 意外离开锁定将保持锁定状态,并且唯一的方法是 解锁它们是等待连接超时或杀死 过程。事务也会出现同样的锁定问题。 (看 cmets 于 2002 年 4 月 23 日和 2003 年 7 月 12 日)
通常在连接关闭时会删除临时表,但由于不会关闭持久连接,因此不会关闭临时表 如此暂时。如果您没有显式删除临时表 完成后,该表将已经存在以供新客户端重用 相同的连接。设置会话也会出现同样的问题 变量。 (参见下面的 2004 年 11 月 19 日和 2006 年 8 月 7 日的 cmets)
如果 PHP 和 MySQL 在同一台服务器或本地网络上,连接时间可能可以忽略不计,这种情况下没有优势 到持久连接。
Apache 不能很好地处理持久连接。当它接收到来自新客户端的请求时,而不是使用 已经打开持久连接的可用子级,它 倾向于产生一个新的孩子,然后必须打开一个新的数据库 联系。这会导致过多的进程处于休眠状态, 浪费资源,并在达到最大值时导致错误 连接,而且它破坏了持久连接的任何好处。 (参见下面 2004 年 2 月 3 日的 cmets 和脚注 http://devzone.zend.com/node/view/id/686#fn1)
【讨论】:
你应该在高负载的网站上使用 mysql_pconnect,这样连接会被重用。这可以将速度提高两倍...
但是,如果您不期望高负载;由于上述 Svetlozar Angelov 的原因,使用普通连接。
【讨论】: