3

好吧,具体来说,我正在运行我自己的内容管理系统,该系统在 Linux Apache2 MySQL PHP 服务器上运行。该系统可与带模块的 Linux 内核相媲美。

--(请求开始)--

系统启动他的“init”脚本,该脚本负责基于依赖项的模块加载(仅以正确的顺序加载最小模块,因此它“正常工作”,但没有其他内容(不加载禁用/未使用的模块))。

一旦系统准备好,请求处理就进入了——所有的数据都被加载、解析、处理、缓冲、咀嚼等等,直到我们有一个完整的 (x)HTML 页面。

--(请求结束)--

一旦请求被处理,数据被传递到浏览器并且系统被杀死。所有这一切都在很短的时间内发生,但最占用 cpu 的是开始部分(准备系统以供使用)。


我有几个选择:

  1. 让系统以现在的方式运行(并且在为实际使用而部署后可能会出现性能问题(每个系统大约 100-500 个请求/秒))
  2. 进行某种预加载(手动准备系统,然后不要让任何魔法发生)
  3. 找到一种方法使系统保持在就绪状态(所有模块已加载、类已初始化、MySQL 链接就绪等)

问题是:

  • 有没有办法完成第3点?(第2点是我最不想要的)
  • 如果可能,怎么做?

感谢您提供任何可以为我指明正确方向的建议!

4

2 回答 2

1

可能您需要的是 PHP APC、eAccelerator 或其他一些可以解析您的代码并将其作为字节码保存在内存中的扩展,这对于 CPU 饥饿的情况可以帮助您提高性能。看来您具备设置此类扩展程序的知识,我建议您使用“APC”作为最常用和测试最多的扩展程序:

http://en.wikipedia.org/wiki/List_of_PHP_accelerators

编辑:对于 MySQL,我会使用“持久连接”,这也可能会有所帮助。

于 2011-08-15T21:47:29.370 回答
0

您可能希望将您的 Php 编译成 c++ 或 Java 并通过牺牲一点点来获得性能去查看维基百科以获取更多信息的HipHop

于 2011-08-15T21:52:23.113 回答