【问题标题】:Which is better: mysql_connect or mysql_pconnect哪个更好:mysql_connect 和 mysql_pconnect
【发布时间】:2010-11-23 08:59:49
【问题描述】:

我是一个 PHP 新手,正在编写一些脚本来显示数据库中的一些新闻文章,并且想了解一些事情。

  • 要打开与 MySQL 数据库的连接,mysql_connectmysql_pconnect 哪个更好?
  • 使用持久连接到数据库有哪些优点或缺点?
  • 在什么样的场景下会调用持久连接?

【问题讨论】:

标签: php mysql


【解决方案1】:

如果您要编写网页,则不需要持久连接。它占用了太多资源。使用 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 的原因正是在您制作 Web 应用程序时,这样您就不必为每个呈现的页面执行昂贵的连接数据库操作。
  • 以及为什么我的连接在我读星座时要保持打开状态,我要求另一页后可能需要 1 小时?!
  • 我以前在某处看过这篇文章...看起来是复制粘贴的。反正这个话题之前已经探讨过:stackoverflow.com/questions/1128329/…
  • 您可能应该引用这些观点的来源:php.net/manual/en/function.mysql-pconnect.php#85670。与实际的资源消耗相比,使用 mysql_pconnect 在更快地达到连接限制并必须对其进行管理方面更具负担。
【解决方案2】:

您还应该查看mysqlipdo。 mysql-extension 已经很老了,不支持 mysqli 支持的预处理语句。并且 pdo 支持多个数据库而无需更改查询。

【讨论】:

    【解决方案3】:

    你应该在高负载的网站上使用 mysql_pconnect,这样连接会被重用。这可以将速度提高两倍...

    但是,如果您不期望高负载;由于上述 Svetlozar Angelov 的原因,使用普通连接。

    【讨论】:

      猜你喜欢
      • 2015-04-18
      • 2010-09-19
      • 2019-02-01
      • 2010-09-16
      • 2017-03-29
      • 2019-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多