最近在搞 PHP7 ,框架使用的是 CodeIgniter 。对方提供的服务器不是固态硬盘的,通过 xhprof 分析后,发现每次用include
或者require
读取框架文件都要花上一定时间。
有没有什么办法将这些文件缓存到内存中?这样每次都可以加速访问了。
1
sagaxu 2017-04-16 01:00:50 +08:00
文件读过一次之后,已经在 VFS cache 里了,用 ssd 还是 hdd 没区别的。
比较耗时的肯定不是磁盘 IO ,是 PHP 内部的事情,有两件事情。 第一,调用词法分析语法分析,生成 AST 。 第二,执行框架的初始化代码,比如读配置文件,构建路由器。 第一件事情,有 opcache 这类扩展去解决, php5.5 起内置了一个 第二件事情,要么不用 FPM 方式跑,要么用 C 写框架,就两个办法 |
2
UnisandK 2017-04-16 01:12:29 +08:00
开 APC 或者 zend ?
|
4
realpg 2017-04-16 02:00:49 +08:00
打开 opcache
|
5
greatonce 2017-04-16 02:35:08 +08:00
workerman
|
6
wwolf 2017-04-16 08:43:36 +08:00
常驻内存,用 swoole
|
7
rogerchen 2017-04-16 09:04:55 +08:00 via Android
自己挂载一个 tmpsf ,把文件挪进去,比 cache 可靠得多
|
8
gouchaoer 2017-04-16 09:16:03 +08:00 via Android
开 opcache 就完了。。。。 workerman 和 swoole 不适合你,还是 php-fpm 比较鲁棒简单
|
9
iyaozhen 2017-04-16 14:13:08 +08:00 via Android 1
你都 PHP7 了还不开 OPcache 。开了会还很多,也不用上啥 swoole
「读取框架文件都要花上一定时间。」这个一定时间是多久? |
10
xiaotianhu 2017-04-16 17:43:27 +08:00
/dev/shm 写个脚本把 php 文件放在这儿就好了
|
11
breeswish 2017-04-17 00:54:12 +08:00
你确定是在读框架文件而不是在指定框架代码?
|
12
bombless 2017-04-17 01:10:11 +08:00 via Android
同,用 opcache 即可
|
13
byfar 2017-04-17 13:23:17 +08:00
借楼问下, ci 加载类是延时加载的吗?
印象中 xhprof 不支持 php7 了,自己编辑安装的另说。 这个帖子应该不是在讨论性能问题吧?如果加载个框架就有性能问题了,那框架问题很大吧。 开 opcache 会预编辑 php 文件常驻内存,加快 php 执行效率。 php-fpm 的话只是少加载了 php 配置和初始化的开销,并不会加快 include 或者 require 读取框架文件 的速度。 |