• [笔记] 使用 opcache 优化生产环境 PHP


    OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。

    一、php.ini配置opchche示例

    [opcache]
    zend_extension=opcache.so
    ; 开关打开
    opcache.enable=1
    opcache.enable_cli=1
    ;共享内存大小, 酌情而定,单位 megabytes
    opcache.memory_consumption=256      
    ;interned string的内存大小, 也可调
    opcache.interned_strings_buffer=8
    ;最大缓存的文件数目,命中率不到 100% 的话, 可以试着提高这个值
    opcache.max_accelerated_files=4000
    ;60s检查一次文件更新
    opcache.revalidate_freq=60
    ;打开快速关闭, 打开这个在PHP Request Shutdown的时候  会收内存的速度会提高
    opcache.fast_shutdown=1
    ;不保存文件/函数的注释
    opcache.save_comments=0  
    ; 是否快速关闭, 打开后在PHP Request Shutdown的时候回收内存的速度会提高
    opcache.fast_shutdown=1

    二、部分配置参数说明

    • opcache.revalidate_freq 
      这个配置选项用于设置缓存的过期时间,如果设置为0,每次请求时,都会检查文件是否修改,很耗资源,所以如果暂时不需要使用opcache,直接把opcache.enable设置为0即可。

    • opcache.validate_timestamps 
      配置为1时,会根据revalidate_freq设定的值检查更新代码;设置为0时,永不检查。

    当需要一次更新大量代码的时候,可以设置为0,上传全部完成后,再设置为1。避免上传代码造成系统的不稳定。

    • opcache.max_accelerated_files 
      真实的取值是在质数集合 { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 } 中找到的第一个比设置值大的质数。

    你可以运行 find . -type f -print | grep php | wc -l 这个命令来快速计算你的代码库中的PHP文件数。

    三、推荐配置

    开发模式下推荐,直接禁用opcache扩展更好
    
    opcache.revalidate_freq=0
    opcache.validate_timestamps=1
    opcache.max_accelerated_files=3000
    opcache.memory_consumption=192
    opcache.interned_strings_buffer=16
    opcache.fast_shutdown=1
    
    
    多台机器集群模式或者代码更新频繁时推荐,可以兼顾性能,方便代码更新
    
    opcache.revalidate_freq=300
    opcache.validate_timestamps=1
    opcache.max_accelerated_files=7963
    opcache.memory_consumption=192
    opcache.interned_strings_buffer=16
    opcache.fast_shutdown=1
    
    
    稳定项目推荐,性能最好
    
    opcache.revalidate_freq=0
    opcache.validate_timestamps=0
    opcache.max_accelerated_files=7963
    opcache.memory_consumption=192
    opcache.interned_strings_buffer=16
    opcache.fast_shutdown=1

    以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,

    资料获取方式:

    1. 微信搜索公众号[ 码农编程进阶笔记 ],后台回复关键字

    2. 或   点击这里直通车     直通车2  

  • 相关阅读:
    微信聊天框测试思路
    巧用&&和|| 让逻辑代码更简洁,逼格看起来更高一点(玩笑脸)
    获取URL中的参数
    解决移动端点击闪烁问题
    npm安装依赖包 --save-dev 和 --save; package.json的devDependencies和dependencies 的区别!
    vue-cli 3配置接口代理
    js小方法积累,将一个数组按照n个一份,分成若干数组
    web前端识别文字转语音
    html 锚点
    ES6 必须要用的数组Filter() 方法,不要再自己循环遍历了!!!
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15453156.html
Copyright © 2020-2023  润新知