可以通过php代码生成opcode字节码缓存。
那么什么是opcode字节码缓存呢?
php是一门解释型的语言,php解释器执行php脚本时会解析php脚本代码,将php脚本代码编译成一系列可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。然后执行这些操作码.
每次请求php文件都是这样,所以会消耗很多资源,Opcode cache 的目地是避免重复编译,减少 CPU 和内存及硬盘io开销。
在PHP 5.5.0及之后版本中,PHP已经将Opcache功能以拓展形式内嵌在发布版本中了,默认未开启Opcache加速,需要我们手动开启。对于之前的老版本,可以将Opcache作为PECL拓展库进行安装和配置.
[php]
engine = On
extension = php_opcache.dll
zend_extension = "/php/ext/php_opcache.dll"
[opcache]
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
重启apache服务,检查opcache是否开启成功
opcode配置讲解
;开关打开注意:如果设置opcache的opcache.validate_timestamps的指令设成0,那么zend opcache就察觉不到PHP脚本的变化,我们必须手动清空zend opcache缓存的字节码,让他发现php脚本的变动.这个设置适合在生产环境中设置成0,在开发环境下最好还是设置成1.
opcache.enable=1
;开启CLI
opcache.enable_cli=1
;可用内存, 酌情而定, 单位为:Mb
opcache.memory_consumption=528
;Zend Optimizer + 暂存池中字符串的占内存总量.(单位:MB)
opcache.interned_strings_buffer=8
;对多缓存文件限制, 命中率不到 100% 的话, 可以试着提高这个值
opcache.max_accelerated_files=10000
;Opcache 会在一定时间内去检查文件的修改时间, 这里设置检查的时间周期, 默认为 2, 定位为秒
opcache.revalidate_freq=1
;打开快速关闭, 打开这个在PHP Request Shutdown的时候回收内存的速度会提高
opcache.fast_shutdown=1
;检查脚本时间戳是否有更新的周期,以秒为单位。设置为 0 会导致针对每个请求, OPcache 都会检查脚本更新。
opcache.revalidate_freq=0
;如果启用,那么 OPcache 会每隔 opcache.revalidate_freq 设定的秒数 检查脚本是否更新。
;如果禁用此选项,你必须使用 opcache_reset() 或者 opcache_invalidate() 函数来手动重置 OPcache,也可以 通过重启 Web 服务器来使文件系统更改生效。
opcache.validate_timestamps=0
我们可以这样配置,启用自动重新验证缓存功能:
opcache.validate_timestamps=1
opcache.revalidate_freq=0
opcode的php函数
opcache_compile_file($php_file); #预生成opcode缓存
opcache_is_script_cached($php_file) #查看是否生成opcode缓存
opcache_invalidate($php_file, true) #清除单个缓存
opcache_reset(); #清空缓存
opcache_get_status(); #获取缓存的状态信息
opcache_get_configuration(); #获取缓存的配置信息
网友回复
DLNA与UPnP的区别和不同?
苏超自建抢票app,通过先预约再抽签化解高并发抢票?
python如何让给电脑在局域网中伪装成电视接收手机的投屏图片视频播放?
如何结合python+js如何自己的视频编码与加密播放直播?
python如何在电脑上通过局域网将本地视频或m3u8视频投屏电视播放?
腾讯视频爱奇艺优酷vip电影电视剧视频如何通过python绕过vip收费直接观看?
有没有可免费观看全球电视台直播m3u8地址url的合集?
有没有实现观影自由的免vip影视苹果 CMS V10 API的可用url?
python如何实时检测电脑usb插入检测报警?
如何判断真人操作的鼠标移动直线轨迹与机器操作的轨迹?