具体来说,我正在运行我自己的内容管理系统,该系统运行在 Linux Apache2 MySQL PHP 服务器上。该系统可与带模块的 Linux 内核相媲美。
--(请求开始)--
系统启动他的“init”脚本,负责基于依赖的模块加载(只加载最少的模块,以正确的顺序,所以它“正常工作”,但没有别的(不加载禁用/未使用的模块) ).
一旦系统准备就绪,请求处理就开始了——所有的数据都被加载、解析、处理、缓冲、咀嚼等等,直到我们有一个完整的 (x)HTML 页面。
--(请求结束)--
一旦请求被处理,数据被传递到浏览器并且系统被终止。所有这些都在很短的时间内发生,但最占用 CPU 的是开始部分(准备系统以供使用)。
我有几个选择:
- 让系统保持现在的状态(并在部署用于实际使用后冒性能问题的风险(每个系统大约 100-500 个请求/秒))
- 做一些预加载(手动准备系统,然后不要让任何神奇的事情发生)
- 找到一种方法使系统保持就绪状态(加载所有模块、初始化类、准备好 MySQL 链接等)
问题是:
- 有没有办法实现第 3 点? (第2点是我最不想要的)
- 如果可能,怎么做?
感谢您给我指明正确方向的任何建议!
最佳答案
可能您需要的是 PHP APC、eAccelerator 或其他一些扩展,它们可以解析您的代码并将其作为字节码保存在内存中,这对于 CPU 饥饿的情况可以极大地帮助您提高性能。看来您具备设置此类扩展的知识,我会向您推荐“APC”,它是目前使用和测试最多的一种:
http://en.wikipedia.org/wiki/List_of_PHP_accelerators
编辑:对于 MySQL,我会使用“持久连接”,这也可能有所帮助。
关于php - 是否可以有一个持久的 PHP session 来更快地交付网页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7071162/