【问题标题】:Use the same MySQL link for all users?对所有用户使用相同的 MySQL 链接?
【发布时间】:2012-08-26 13:37:19
【问题描述】:

我的共享服务器限制了从 PHP 到 MySQL 的并发连接数。有时当我收到更多流量并且每个人都需要访问数据库时,他们会因为max connection limitation 而被拒绝。我希望mysqlp_connect 能解决问题,但显然持久连接不会为所有用户而是为每个用户保持一个连接。

是否总是在服务器上打开 ONE MySQL 链接并让每个用户只使用该链接而不是为每个用户创建一个新链接?

【问题讨论】:

  • 您意识到(如果确实可能的话)会导致用户延迟,对吧?当其他人使用连接时,他们将无法访问任何内容。您可以修改您的 PHP 配置文件并添加更多并发连接。
  • 增加并发连接限制会更好。这是有原因的。
  • 不幸的是我在php中从未见过这样的东西,如果可能的话,尝试使用使用jdbc的java后端,并使用REST接口将php连接到它,只是一个想法

标签: php mysql sql-server database optimization


【解决方案1】:

我只是从这篇文章中引用一段话,但我建议你阅读这篇文章。
就我而言,我会创建一个连接并在每次操作完成后将其丢弃,因为开销非常小,不会影响我的任何系统。
在您的情况下,您将不得不查看您的代码并判断这将花费多少开销;通常您会对此进行基准测试。


" 这里的答案非常简单——效率。如果创建到 SQL 服务器的链接的开销很高,则持久连接很好。这个开销是否真的很高取决于很多因素。例如,它是什么类型的数据库,它是否位于您的 Web 服务器所在的同一台计算机上,SQL 服务器所在的计算机的负载情况等等。
底线是,如果连接开销很高,持久连接对您有很大帮助。它们导致子进程在其整个生命周期内仅连接一次,而不是每次处理需要连接到 SQL 服务器的页面时。这意味着每个打开持久连接的子节点都将拥有自己的与服务器的打开持久连接。
例如,如果您有 20 个不同的子进程运行一个与 SQL 服务器建立持久连接的脚本,那么您将有 20 个与 SQL 服务器的不同连接,每个子进程一个。 "

来源:http://php.net/manual/en/features.persistent-connections.php

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-31
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 2015-04-28
    • 1970-01-01
    相关资源
    最近更新 更多