【问题标题】:PHP resources optimization for multiple small requests针对多个小请求的 PHP 资源优化
【发布时间】:2014-04-08 19:52:24
【问题描述】:

MYSQL 结构: 多个数据库在每个数据库中具有相同的表,格式为:

db1.a
db1.b
...
db2.a
db2.b
...

....
....等等

PHP 结构:
./includes/ --> 包含常量的文件
./work/ --> 用于与 db 交互的文件
main.php --> 检查工作文件夹内文件中的请求类型和调用函数

Android HTTP 请求和响应查询将使用 JSON 访问此系统,并以相同的方式从数据库返回数据。 服务请求的代码将保持不变,只有数据库会根据用户而改变。

问题的症结在于 - 成千上万的用户会从 Android 应用程序向任何一个函数发送请求,该函数在单个请求中只与特定数据库的 1 个表进行交互。本质上,每个请求中要执行的代码非常小,每个请求最多 2 或 3 个 db 查询。

我感觉我的解决方案在某种程度上是错误的。一定有办法优化这么多请求。

  1. 我将包含多个包含每个请求的数组常量的包含文件。这会导致响应延迟吗?我目前正在包含文件,创建包含常量的类的对象并将其传递给所需的任何函数。在 memcached 中保留包含对象会更快吗?为所有请求将对象保留在内存中的任何其他方法。 注意:如果我将包含常量保持为静态,代码会变得更加复杂,因为我必须在每个函数中声明它们是全局的,这在以后处理起来会非常麻烦。

  2. 我读到有人使用某种框架或其他框架 - zend、symphony。使用这样的框架有什么好处,我有必要使用其中任何一个吗?

  3. 有没有办法让对象和数据库连接保持一个会话,以便在给定的时间范围内,如果具有相同会话 id 的同一用户发出请求,每个 php 资源都会被重用?

任何帮助将不胜感激。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    你似乎很困惑。为什么知道您有一个名为“work”的文件夹对我们很重要?尽量做到精确——也许你自己也能看到解决方案。

    回答您的问题:

    1. 一定有办法优化这么多请求。 当有这么多请求时,我想他们通常会得到相同的结果。所以你可以缓存你的页面。

    2. 这只会导致最小的延迟。它是如此之小,你不会注意到它;)

    3. 您的项目越大,使用框架就越好。它简化了许多任务并帮助您构建项目。它会影响性能。

    4. 是的,有一种方法可以序列化对象。但是由于写入和读取数据也可能很慢(并且可能会引入新的软件错误),因此您应该只为真正的大事这样做。您不能/不需要缓存 mysql 连接。当您使用 PDO 或 mysqli 时,它会自动为您完成。

    如果您是初学者,则应该停止过多担心性能,而应该多担心代码/架构的质量。从长远来看,这会更有帮助。 如果您必须决定性能与可读性 - 总是更喜欢可读性:)

    祝你的项目好运

    【讨论】:

      猜你喜欢
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多