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文件的缓存字节码。

时间: 2024-10-04 12:49:14

php的opcache缓存扩展的相关文章

PHP 缓存扩展opcache

opcache (全程 zend opcache): 从php5.5开始,默认提供的php脚本缓存扩展,编译php5.5时加上参数--enable-opcache就可以编译opcache了,只是要启用的话必须配置. 原理: 其实非常简单,opcache只是把把PHP执行后的数据(opcode)缓存到内存中从而避免重复的编译过程,能够直接使用缓冲区已编译的opcode代码从而提高速度,降低服务器负载 效果: 在实际应用当中能使QPS数大致增加3倍以上 注意事项: 启用opcache后,典型的问题就

PHP7 opcache缓存清理问题

PHP7 opcache缓存清理问题 背景 OPcache通过opcode的缓存和优化,提供更快的PHP执行过程.业务在php7环境运营时,为了提升请求的性能,在PHP7环境中配置OPcache扩展.业务在更新代码后,访问业务系统时提示无法找到对应的文件或请求的内容还是更新前的旧内容,webserver重启以后,请求访问到的文件就都是最新的了,问题就貌似解决了. 问题分析 根据现象分析,代码更新后请求找不到新增的文件,尤其是还在请求已有文件更新前的内容,那么可能跟缓存有关系,考虑到跟业务代码逻辑

搭建LNMP发布ecshop系统及压测启用opcache缓存与否的情况

安装环境:CENTOS6.5,nginx1.6.2,php-5.5.18,mysql5.5.38 在安装软件之前安装epel源,就可以直接用yum安装libmcrypt,mhash,mcrypt等php扩展. 安装nginx 解决依赖关系,安装开发包组"Development Tools"和 "Server Platform Development". #tar –xf nginx-1.6.2 ./configure \ --prefix=/usr/local/ng

xcache:php缓存扩展安装配置

一.RPM安装配置xcache 1.xcache用于缓存加速 php的第三方扩展,存放在epel源上,安装包为php-xcache,在CentOS6上一般有三倍提升 [[email protected]~]# yum list all | grep xcache xcache-admin.noarch 图形化管理界面,无需安装 2.RPM安装php-xcache [[email protected]~]# yum insatll -y php-xcache 3.配置文件 [[email prot

详细讲解Android图片下载框架UniversialImageLoader之内存缓存扩展(四)

内存缓存的扩展还是蛮重要的,无论是数据结构还是具体的实现还是值得我们进行细细的品味,下面咱们就一起能品味这里面的趣味吧. 内存缓存的扩展主要学习下面的几个类:FIFOLimitedMemoryCache.FuzzyKeyMemoryCache. LargestLimitedMemoryCache.LimitedAgeMemoryCache.LRULimitedMemoryCache. LruMemoryCache.UsingFreqLimitedMemoryCache以及WeakMemoryCa

EF批量操作数据与缓存扩展框架

前言 在原生的EF框架中,针对批量数据操作的接口有限,EF扩展框架弥补了EF在批量操作时的接口,这些批量操作包括:批量修改.批量查询.批量删除和数据缓存,如果您想在EF中更方便的批量操作数据,这个扩展将对您来说很有用. 下载安装 这个框架支持通过NuGet包管理器进行安装,你可以在包管理器中搜索:EntityFramework.Extended,最简单的方法就是程序包管理控制台进行安装,安装命令如下: PM > Install - Package EntityFramework.Extended

编译安装 Zend Opcache 缓存Opcache,加速 PHP

Optimizer+ 是 Zend 开发的闭源但可以免费使用的 PHP 优化加速组件,是第一个也是最快的 opcode 缓存工具.现在,Zend 科技公司将 Optimizer+ 在 PHP License 下开源成为 Zend Opcache. GitHub地址:https://github.com/zendtech/ZendOptimizerPlus Zend OPcache 通过 opcode 缓存和优化提供更快的 PHP 执行过程.它将预编译的脚本文件存储在共享内存中供以后使用,从而避免

Opcache缓存

一个php程序运行完成后,内存马上释放,基本上所有数据都在此时销毁(仅有即晒数据会缓存),也就是说此时计算机内存中基本上不存在这个PHP代码中的数据,这和常驻内存的JAVA语言有显著区别.这种缓存机制具有如下的优缺点: 优点:有效避免内存泄漏,内存回收机制更简单,避免因为一个程序的问题而连累整个服务器. 缺点:无法服用已有数据,每个php请求都得重复执行请求-翻译-执行的过程,重复过多. Opcode(操作码)缓存就是虚拟机把PHP代码编译成一种中间码的结果缓存起来(可以缓存到硬盘或内存).下一

HttpCache缓存扩展方法

using System;using System.Collections;using System.Configuration;using System.Web;using System.Web.Caching; namespace Meb.Common.Extensions{ //缓存写入 //验证缓存是否存在 //缓存读取 按缓存索引读取相应缓存值 public static class CacheExtension { //private static int CacheMinute =