V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dangyuluo
V2EX  ›  PHP

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

  •  
  •   dangyuluo · 2017-04-16 00:49:34 +08:00 · 5391 次点击
    这是一个创建于 2789 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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


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

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

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

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

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

    php-fpm 的话只是少加载了 php 配置和初始化的开销,并不会加快 include 或者 require 读取框架文件 的速度。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1156 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:03 · PVG 07:03 · LAX 15:03 · JFK 18:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.