opcache (全程 zend opcache):

从php5.5开始,默认提供的php脚本缓存扩展,编译php5.5时加上参数--enable-opcache就可以编译opcache了,只是要启用的话必须配置。

原理:

其实非常简单,opcache只是把把PHP执行后的数据(opcode)缓存到内存中从而避免重复的编译过程,能够直接使用缓冲区已编译的opcode代码从而提高速度,降低服务器负载

效果:

在实际应用当中能使QPS数大致增加3倍以上

注意事项:

启用opcache后,典型的问题就是由于opcache的缓存加速机制导致的代码变更后无法立即看到效果。php代码被转换成可立即执行的“机器码”后会有一定的缓存时间后才会去检查原始的PHP文件是否变动过,具体视配置项opcache.revalidate_freq设置的秒数情况而定;这样就会导致某些情况下明明更新了PHP文件中的代码,但执行后却看不到改变后的效果,这就是因为opcache检查php文件变动的间隔时间尚未结束所导致。 这个问题并不是bug,而要视具体生产环境来设定opcache.revalidate_freq值,倘若php代码很少变动,建议该值设置的大一些,可减少opcahce由于检查php文件变动而带来的额外开销,比如7200 那么在变动php文件后如何才能快速降低opcache缓存带来的这种问题呢?最简单的方法就是更新代码后重启下php-fpm(nginx fast-cgi模式)或apache(apache-handler模式)。当然还可以自己书写一个php脚本,调用opcache_reset()函数重置所有opcache缓存字节码,或者使用opcache_invalidate(PHPfileDir,true)重置指定php文件的缓存字节码。

最新文章

  1. jquery限制文本框只能输入金额
  2. LeetCode Reverse Vowels of a String
  3. 如何把Excel中的某列数值如何转换成文本格式,且兼容性最好?
  4. linux sed 添加 删除 一行
  5. .NET Core扩展IServiceCollection自动注册服务
  6. JAVA package-info文件【转】
  7. CSS中 opacity的设置影响了index(层数)的改变
  8. Android——模拟文件拷贝
  9. js数组如何去掉逗号
  10. 在Linux下写一个线程池以及线程池的一些用法和注意点
  11. JavaScript之数组学习
  12. 小程序员在android移动应用上的赚钱经历
  13. (转)Linux下增加交换分区的大小
  14. 自学Python4.1-文件操作
  15. C# webapi 上传下载图片
  16. 验证当前启动APP的Package 和 Activity
  17. ArrayList代码学习
  18. Python 同步IO/异步IO了解
  19. hadoop中 bin/hadoop fs -ls ls: `.': No such file or directory问题
  20. Alpha 冲刺二

热门文章

  1. python接口自动化28-requests-html爬虫框架
  2. java maven打包jar 方法参数名变var1,var2之类的无意义参数名怎么办
  3. Maven项目搭建-Eclipse版
  4. Revit中如何给不同构件着色
  5. SDUT 3002-素数间隙(素数筛+暴力)
  6. tmux入门
  7. 如何查看Ubuntu下已安装包版本号
  8. Mac下必备快捷键的符号所对应的按键
  9. 判断Android 当前版本是否为debug版本
  10. linux每日命令(8):mv命令