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-13 10:45:21

PHP 缓存扩展opcache的相关文章

php的opcache缓存扩展

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

php中的脚本加速扩展opcache

转自http://blog.jjonline.cn/linux/135.html 今儿在azure里装php5.5.4,发现原先php5.4.php5.3中的zend guard laoder以及php5.2中的Zend Optimizer均不能再用,一直很喜欢用的eaccelerator也悲剧了,编译的时候直接提示错误. 没办法,翻看php5.5.4的安装目录,发现php的安装目录下的扩展库目录有个opcached.so:咦,这个文件是搞毛线的?看名字带cached,难道是个缓存系统?goog

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

PHP扩展--opcache安装及配置

简介 Optimizer+ 是 Zend 开发的闭源但可以免费使用的 PHP 优化加速组件,是第一个也是最快的 opcode 缓存工具.现在,Zend 科技公司将 Optimizer+ 在 PHP License 下开源成为 Zend Opcache. Zend OPcache 通过 opcode 缓存和优化提供更快的 PHP 执行过程.它将预编译的脚本文件存储在共享内存中供以后使用,从而避免了从磁盘读取代码并进行编译的时间消耗.同时,它还应用了一些代码优化模式,使得代码执行更快. 当解释器完成

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

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

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

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

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 =

PHP配置xcache缓存扩展

安装步骤 wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz tar -xf xcache-3.2.0.tar.gz cd xcache-3.2.0 /usr/local/php/bin/phpize ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config make make install ll /usr/lo

Flask 扩展 缓存

如果同一个请求会被多次调用,每次调用都会消耗很多资源,并且每次返回的内容都相同,就该使用缓存了 自定义缓存装饰器 在使用Flask-Cache扩展实现缓存功能之前,我们先来自己写个视图缓存装饰器,方便我们来理解视图缓存的实现.首先,我们要有一个缓存,Werkzeug框架中的提供了一个简单的缓存对象SimpleCache,它是将缓存项存放在Python解释器的内存中,我们可以用下面的代码获取SimpleCache的缓存对象: from werkzeug.contrib.cache import S