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