4

是否可以在 PHP 中汇集数据或功能?

我编写的业余 PHP 代码会唤醒以处理响应、加载函数、打开数据库连接、创建对象、初始化它们,然后 - 在处理完响应后 0.01 秒后死亡,让下一个请求重新加载,解析,然后再次运行主要相同的东西。

这是没有意义的,我发现它消除了我很多工作的价值,即没有功能/数据/对象池。例如,我可以编写类,发现它们都被每个请求重新初始化——我试图开发一个有意义的对象结构有什么意义?

所以:我如何编写 PHP 来汇集数据和功能?

4

3 回答 3

4

PHP 中没有一个解决方案池或持久状态,它没有像 Java 这样的应用程序状态,它或多或少遵循 HTTP 无状态协议。你可以做的是:

  • 创建到数据库的持久连接(即,如果您使用相同的参数调用它们,它们将被重用,它们不会神奇地存在,但您可以避免实际连接的开销)。
  • 将对象存储在会话中以保持计算状态(它们将被序列化,并在下一个请求时取消序列化)。
  • 将需要大量但一次性初始化的工作路由到独立于网络服务器运行的守护进程(想到的是一个 gearman 服务器和工作人员)。
  • 但最后,如果您的应用程序需要全局状态,那么 PHP 可能不是正确的解决方案。
于 2011-06-09T19:29:33.037 回答
3

PHP 几乎不是瓶颈。我们的服务器在高峰时刻每秒处理数百个请求。这些也不是微小的要求。这似乎不合逻辑,但 PHP 实际上是非常快的。您可以使用 APC 缓存来缓存预编译的 PHP 文件,以使其更快。然后,您可以使用 MemCache 来存储数据,因此任何查询结果和类似的数据都可以轻松缓存,而无需依赖 MySQL 的次优查询缓存。

于 2011-06-09T21:02:39.827 回答
1

我和你有类似的担忧;但奇怪的是, PHP 的速度快得令人眼花缭乱。除了应该由服务器缓存的数据库查询之外,只剩下连接问题。可以很容易地汇集。

我的系统甚至必须解析几个 kb 的 XML 文件以获取响应。仍然瓶颈始终是数据库服务器。

不过,PHP 的这种临时状态也有好的一面。一个有问题的请求,使系统崩溃不会对下一次连接产生任何不利影响。对我来说似乎更稳定。

于 2011-06-09T20:53:18.427 回答