有没有办法将 PHP 需要加载的. PHP 文件放在内存中?

2017-04-16 00:49:34 +08:00
 dangyuluo

最近在搞 PHP7 ,框架使用的是 CodeIgniter 。对方提供的服务器不是固态硬盘的,通过 xhprof 分析后,发现每次用include或者require读取框架文件都要花上一定时间。

有没有什么办法将这些文件缓存到内存中?这样每次都可以加速访问了。

5234 次点击
所在节点    PHP
13 条回复
sagaxu
2017-04-16 01:00:50 +08:00
文件读过一次之后,已经在 VFS cache 里了,用 ssd 还是 hdd 没区别的。
比较耗时的肯定不是磁盘 IO ,是 PHP 内部的事情,有两件事情。

第一,调用词法分析语法分析,生成 AST 。
第二,执行框架的初始化代码,比如读配置文件,构建路由器。

第一件事情,有 opcache 这类扩展去解决, php5.5 起内置了一个
第二件事情,要么不用 FPM 方式跑,要么用 C 写框架,就两个办法
UnisandK
2017-04-16 01:12:29 +08:00
开 APC 或者 zend ?
dangyuluo
2017-04-16 01:37:14 +08:00
@sagaxu 了解到了,我再去学习一下。


@UnisandK 同样也谢谢。
realpg
2017-04-16 02:00:49 +08:00
打开 opcache
greatonce
2017-04-16 02:35:08 +08:00
workerman
wwolf
2017-04-16 08:43:36 +08:00
常驻内存,用 swoole
rogerchen
2017-04-16 09:04:55 +08:00
自己挂载一个 tmpsf ,把文件挪进去,比 cache 可靠得多
gouchaoer
2017-04-16 09:16:03 +08:00
开 opcache 就完了。。。。 workerman 和 swoole 不适合你,还是 php-fpm 比较鲁棒简单
iyaozhen
2017-04-16 14:13:08 +08:00
你都 PHP7 了还不开 OPcache 。开了会还很多,也不用上啥 swoole

「读取框架文件都要花上一定时间。」这个一定时间是多久?
xiaotianhu
2017-04-16 17:43:27 +08:00
/dev/shm 写个脚本把 php 文件放在这儿就好了
breeswish
2017-04-17 00:54:12 +08:00
你确定是在读框架文件而不是在指定框架代码?
bombless
2017-04-17 01:10:11 +08:00
同,用 opcache 即可
byfar
2017-04-17 13:23:17 +08:00
借楼问下, ci 加载类是延时加载的吗?

印象中 xhprof 不支持 php7 了,自己编辑安装的另说。

这个帖子应该不是在讨论性能问题吧?如果加载个框架就有性能问题了,那框架问题很大吧。

开 opcache 会预编辑 php 文件常驻内存,加快 php 执行效率。

php-fpm 的话只是少加载了 php 配置和初始化的开销,并不会加快 include 或者 require 读取框架文件 的速度。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/355149

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX