针对多个小请求的 PHP 资源优化

标签 php mysql

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

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

....
....等等

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

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

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

我感觉我的解决方案在某种程度上是错误的。必须有某种方法来优化如此多的请求。

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

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

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

任何帮助将不胜感激。

最佳答案

你看起来很困惑。为什么知道您有一个名为“work”的文件夹对我们来说很重要?尝试尽可能精确 - 也许您自己也会找到解决方案。

回答您的问题:

  1. 必须有某种方法来优化如此多的请求。 当有这么多请求时,我想他们通常会得到相同的结果。这样您就可以缓存您的页面。

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

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

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

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

祝你的项目顺利

关于针对多个小请求的 PHP 资源优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22946854/

相关文章:

php - 什么时候使用 PDO 常量 PDO::PARAM_STR?

php - 拉维尔 : Eager loading pivot table and sorting on pivot table field

php - 无法从使用 PASSWORD() 函数的数据库中提取信息

sql - MySQL 中的 Decimal(3,2) 值始终为 9.99

php - 推特线程对话

php - 休会框架,选择查询

php - Android 多部分图像上传问题

php - 对本地数据库感到困惑

php - MySQL MATCH AGAINST 不返回所有拟合结果

php - 如何将while循环中的三个不同变量放入json数组中