【问题标题】:PDO, Injection and conserving server resourcesPDO,注入和节省服务器资源
【发布时间】:2015-08-27 20:29:00
【问题描述】:

我正在重构 PHP 代码以从 mysql_* 和 mysqli_* 函数转移到 PDO,并希望尽可能高效地完成此任务。

我使用了一个名为“core.common.php”的文件。我初始化 PDO 数据库访问对象,具有 $_SESSION 管理功能,以及其他功能,例如通用消息和错误通知功能(以 s 的形式)。我在开发和调试时广泛使用 MsgBox() 和 ErrBox() 功能。该文件包含在每个 PHP 生成的网页的顶部。

至少通过一些测试,我已经成功地将 PDO 对象(通过在 __construct 方法中注入 PDO 对象)传递给需要数据库访问的类。

在我看来,这种方法虽然到目前为止仍然有效,但仅适用于网站的每个访问者...每个访问者都可以在他们访问网站的所有页面中使用相同的 PDO 连接器。

我真正的问题是... 当有很多访客时会发生什么?每个人都有自己的 PDO 实例吗?这是否意味着会有很多数据库连接实例?

我要问的原因是我当前使用的主机“限制了我的资源使用”,原因是……根据他们的说法……“过度使用资源”。它是一个“共享服务器”。他们建议升级到 VPS(虚拟专用服务器),当然需要额外付费。

主持人是在骗我多$$吗?? 在专业人士的眼中,什么是我解决这个问题的最佳方法? 而且...绝对适合所有人...要批判性和具体性。

非常欢迎任何想法!

【问题讨论】:

  • 如果您使用 mysql 或 mysqli 使用过多的资源,使用 PDO 也没有什么不同。如果你已经使用 mysqli 让它工作了,为什么要把所有东西都重构为 PDO?
  • 每个人都有自己的 PDO 实例吗? 是的。但这应该不是问题,直到您同时获得 1000 个用户我的意思是相同的 5 分钟时间段,而不是同一天 :-) 所以通常即使是 VPS,服务器性能也没有问题。问题通常是您在 php 中编写代码和发送问题的方式。
  • 如果您运行的不是静态站点,那么无论如何您都应该在 VPS 上。如果您不需要大量资源(读取 好 共享计划的价格大致相同。
  • @Mike... 重构不仅适用于 PDO,而且自从我最初编写的类以来,我学到了一些东西,这将使它们更有效率。
  • @prodigitalson... 在访问其 cPanel 上的“资源使用”部分时,我看到的唯一内容是进入/退出折线图达到最大值。我已向主持人询问了他们决定的详细原因。进入/退出(至少对我而言)意味着访客。没有指定数据库连接。

标签: php mysql pdo


【解决方案1】:

当有很多访客时会发生什么??

一模一样 mysql 和 mysqli 函数发生的事情是一样的。

每个人都有自己的 PDO 实例吗?

是的。在某种程度上。

这是否意味着会有很多数据库连接实例?

是的。就像使用 mysql 函数一样。

我目前使用的主机“限制了我的资源使用”,原因是……据他们说……“资源使用过多”。

确保每个脚本实例只有一个连接。根据您的描述,它已经是这样了,但只是为了确定。这可能只是 PDO 的问题。如果使用,还要关闭持久连接。

关于这种过度使用的其他方面,您最好提出一个单独的问题,就如何分析您的代码以达到瓶颈提出建议。

【讨论】:

  • 谢谢。我确保这些类每个脚本只使用一个连接,但每个类都在创建自己的连接......现在,通过注入让它们都只使用一个连接。
猜你喜欢
  • 2019-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-24
  • 2022-01-07
  • 1970-01-01
  • 2018-05-01
相关资源
最近更新 更多