php Zend Opcache,xcache,eAccelerator缓存优化详解及对比

XCACHEphp

XCache 是一个开源的 opcode 缓存器/优化器, 这意味着他可以提升您服务器上的 PHP 性能. 他经过把编译 PHP 后的数据缓冲到共享内存从而避免重复的编译过程, 可以直接使用缓冲区已编译的代码从而提升速度. 一般可以提升您的页面生成速率 2 到5 倍, 下降服务器负载.html

XCache 是一个又快又稳定的 PHP opcode 缓存器. 通过良好的测试并在大流量/高负载的生产机器上稳定运行. 通过(在 linux 上)测试并支持全部现行 PHP 分支的最新发布版本, 如 PHP_4_3 PHP_4_4 PHP_5_0 PHP_5_1 PHP_5_2 HEAD(6.x), 并支持线程安全/Windows. 与同类 opcode 缓存器相比更胜一筹, 好比可以快速跟进 PHP 版本.linux

XCache 工程由 mOo 领队, 他也是 Lighttpd 的开发成员之一. Lighttpd 是最快的 Web 服务器应用程序之一, 而且超越 Apache 以及许多其余 Web 服务器. XCache 努力达到相似的效果.git

XCache 的INI配置详解github

载入 XCache 模块    web

   
引用    
;; 安装成 zend extension (推荐), 路径通常是 “$extension_dir/xcache.so”    
zend_extension = /usr/local/lib/php/extensions/non-debug-non-zts-xxx/xcache.so    
;; Windows 系统例子:    
zend_extension_ts = c:/php/extensions/php_xcache.dll    
;; 或者您也可把 XCache 安装成 extension, 注意确保您的 extension_dir 设置正确, 并    
把 xcache.so 或者 php_xcache.dll 放到该目录里面    
; extension = xcache.so    
;; 或者 Win32 系统:    
; extension = php_xcache.dllapache

XCache Administrationcentos

xcache.admin.user string  
验证名.    
xcache.admin.pass string    
md5 后的验证密码, 亦即 md5(您的密码), 留空则禁用管理页面.    
xcache.test string    
仅在测试一些功能的时候才启用. 若是您不知道这个功能的做用, 则您不须要知道.    
xcache.coredump_directory string    
设 置在 crash (SIGSEGV/SIGABRT) 时保存 core dump 文件的路径. 留空则禁止, 或者设置为相似 “/tmp/phpcore/” 的目录. 确保这个路径能够被 php 写入文件. (与 open_basedir 无关).    
xcache.admin.enable_auth string    
如 果你打算本身处理验证, 用这个选项禁止 HTTP 验证功能. 值得注意的是任意 vhost 用户均可以安装一个 XCache admin 页面, 若是禁止了内建 HTTP 验证, 则他们亦不须要权限便可访问管理页面. 出于安全考虑, 您应该尽可能考虑保留 XCache 内建验证功能, 针对 XCache admin 页面特定地址取消网页服务器的 mod_auth 这个选项仅在 1.2.x 系列有做用, 起始版本 1.2.1浏览器

XCache Cacher缓存

xcache.cacher boolean  
使用/不使用 opcode 缓存器. xcache.size = 0 时无效.    
xcache.size int    
0 禁止, 非 0 则启用缓存器. 请注意您系统所容许的 mmap 最大值.    
xcache.count int    
指定将 cache 切分红多少块. 参考 SplittedCache    
xcache.slots size    
只是做为 hash 槽个数的参考值, 您能够放心地缓冲超过这个个数的项目.    
xcache.ttl seconds    
设置缓冲项目的 Ttl (Time To Live) 值, 0=永不过时.    
xcache.gc_interval seconds    
检查过时项目, 回收内存空间的间隔.    
xcache.var_size int    
xcache.var_count int    
xcache.var_slots size    
xcache.var_gc_interval seconds    
同上, 不过用于数据缓冲而不是 opcode 缓冲.    
xcache.var_ttl seconds    
xcache_(get|set|inc|dec) 等的默认 ttl 值.    
xcache.var_maxttl seconds    
最大 ttl 值, 程序没法指定超过这个最大值的 ttl.    
xcache.readonly_protection boolean    
若是启用了 ReadonlyProtection, 将会略微下降性能, 可是会提升必定的安全系数. 这个选项对于 xcache.mmap_path = /dev/zero 无效.    
xcache.mmap_path string    
对 于 *nix, xcache.mmap_path 是 文件路径, 不是目录. 对于 Win32, xcache.mmap_path 只是匿名的 map 名, 不是实际的文件路径. 若是您要启用 ReadonlyProtection 请用相似 “/tmp/xcache” 的路径. 2 组 php 不应共用同一个路径 (/dev/zero 除外).

XCache Optimizer

xcache.optimizer boolean  
启用优化器 (目前无效).

XCache Coverager

xcache.coverager boolean  
Enable coverage data collecting for xcache.coveragedump_directory and xcache_coverager_start/stop/get/clean() functions (will hurt executing performance)    
xcache.coveragedump_directory string    
Directory to dump coverage data. Make sure it’s readable (care open_basedir) by coverage viewer script. Requires xcache.coverager=On

eAccelerator

一、背景  
eAccelerator 是一个免费开源的PHP加速、优化、编译和动态缓存的项目,它能够经过缓存PHP代码编译后的结果来提升PHP脚本的性能,使得一贯很复杂和离咱们很远的 PHP脚本编译问题彻底获得解决。经过使用eAccelerator,能够优化你的PHP代码执行速度,下降服务器负载,能够提升PHP应用执行速度最高 达10倍。

eAccelerator 项目诞生于2004年,当时它是做为 Turck MMCache 项目的一个分支提出并投入开发的。 Turck MMCache 由 Dmitry Stogov 开发,是个很是优秀的PHP内存缓存加速系统,现在仍然有很大部分 eAccelerator 的代码应用到该项目中,目前该项目有很长时间没有更新了,对于最新的PHP版本支持还未推出。

二、原理  
eAccelerator 经过把通过编译后的PHP代码缓存到共享内存中,并在用户访问的时候直接调用从而起到高效的加速做用。它的效率很是高,从建立共享内存到查找编译后的代码 都在很是短的时间内完成,对于不能缓存到共享内存中的文件和代码,eAccelerator还能够把他们缓存到系统磁盘上。

eAccelerator 一样还支持PHP代码的编译和解释执行,你能够经过encoder.php脚原本对php代码进行编译达到保护代码的目的,通过编译后的代码必须运行在安 装了eAccelerator的环境下。eAccelerator编译后的代码不能被反编译,它不象其余一些编译工具那样能够进行反编译,这将使得代码更 加安全和高效。

最新的PHP5.4.8安装eAccelerator,

须要注意的是要安装高版本的,低了编译不过去。

官网:http://eaccelerator.net/

1.下载安装eAccelerator

#wget https://github.com/eaccelerator/eaccelerator/tarball/master

最新的版本是eaccelerator-42067ac.tar.gz

#tar zxvf eaccelerator-42067ac.tar.gz

须要phpize安装php扩展,若是不明白phpize能够看这个:http://blog.csdn.net/21aspnet/article/details/8193482

须要注意的是须要写php的安装路径对应的phpize下面的php-config也是

#  /usr/local/webserver/php/bin/phpize

须要记住生成的提示信息下面配置php要用到

/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-

20100525/

#./configure –enable-eaccelerator=shared –with-php-config=/usr/local/webserver/php/bin/php-config

# make

须要注意的是要安装高版本的,低了编译不过去。

# make install

2.配置php.ini配置文件

[eaccelerator]  
extension=”/data/webserver/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so”    
eaccelerator.shm_size=”32″    
eaccelerator.cache_dir=”/data/cache/eaccelerator”    
eaccelerator.enable=”1″    
eaccelerator.optimizer=”1″ (若是没有安装optimizer请设置为0关闭加速引擎,不然会出现PHP脚本错误)    
eaccelerator.check_mtime=”1″    
eaccelerator.debug=”0″    
eaccelerator.filter=”"    
eaccelerator.shm_max=”0″    
eaccelerator.shm_ttl=”0″    
eaccelerator.shm_prune_period=”0″    
eaccelerator.shm_only=”0″    
eaccelerator.compress=”1″    
eaccelerator.compress_level=”9″    
创建缓存目录:    
# mkdir -p /data/cache/eaccelerator    
# chmod 0777 /data/cache/eaccelerator    
重启Apache:    
# service httpd restart    
三、检查ZendOptimizer和eaccelerator是否安装成功    
建立一个phpinfo.php文件,内容以下:    
<?php    
    phpinfo();    
?>    
将该文件放置到网站目录,在浏览器中访问,若是出现如下内容则安装成功:    
This program makes use of the Zend Scripting Language Engine:    
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies    
    with eAccelerator v0.9.5, Copyright (c) 2004-2006 eAccelerator, by eAccelerator    
    with Zend Extension Manager v1.0.11, Copyright (c) 2003-2006, by Zend Technologies    
    with Zend Optimizer v3.2.2, Copyright (c) 1998-2006, by Zend Technologies    
2、eaccelerator配置信息详解(根据官方英文说明翻译)    
extension=”/data/webserver/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so”    
解释:PHP扩展eaccelerator.so的路径。    
——————–    
eaccelerator.shm_size=”32″    
解释:eaccelerator可以使用的共享内存大小(单位为MB)。    
在Linux下,单个进程的最大内存使用量受/proc/sys/kernel/shmmax中设置的数字限制(单位为字节),例如CentOS 4.4的shmmax默认值为33554432字节(33554432bytes/1024/1024=32MB)。    
临时更改该值:    
# echo 字节数 > /proc/sys/kernel/shmmax    
按照以上方法更改,在每次重启系统时,该值会被自动还原。若是想永久更改,能够修改/etc/sysctl.conf文件,设置:    
kernel.shmmax = 字节数    
——————–    
eaccelerator.cache_dir=”/data/cache/eaccelerator”    
解释:缓存路径,可使用命令mkdir -p /data/cache/eaccelerator建立该目录,而后使用命令chmod 0777 /data/cache/eaccelerator设置该目录权限为0777    
——————–    
eaccelerator.enable=”1″    
解释:打开或者关闭eaccelerator。”1″指打开,”0″指关闭。默认值为”1″。    
——————–    
eaccelerator.optimizer=”1″  (若是没有安装optimizer请设置为0关闭加速引擎,不然会出现PHP脚本错误)

解释:打开或者关闭代码优化,开启能够加快代码的执行速度。”1″指打开,”0″指关闭。默认值为”1″。  
——————–    
eaccelerator.check_mtime=”1″    
解释:当打开此项时,eaccelerator会在每次请求时检查php文件的修改时间,看其是否被修改过,这会耗费一点时间,若是php文件被修改 过,eaccelerator会从新编译缓存该php文件。当关闭此项时,若是php文件被修改,则须要手工删除eaccelerator缓存,才能显示 被修改的php文件。”1″指打开,”0″指关闭。默认值为”1″。    
——————–    
eaccelerator.debug=”0″    
解释:打开或者关闭调试记录。当打开时,eaccelerator会将对一个缓存文件的每次请求都写进log。打开此项只对调试eaccelerator是否有BUG时有益处。”1″指打开,”0″指关闭。默认值为”0″。    
——————–    
eaccelerator.filter=”"    
解释:决定哪些PHP文件应该被缓存。能够指定一个范围(好比”*.php *.phtml”),这样被指定的文件就会被缓存。若是该范围以!开头,被指定的文件就不会被缓存。默认值为”",表示缓存全部的PHP文件。    
——————–    
eaccelerator.shm_max=”0″    
解释:一个用户使用例如eaccelerator_put之类的函数可以往共享内存中加载的最大数据。默认值为”0″,表示不限制。(单位为字节)    
——————–    
eaccelerator.shm_ttl=”0″    
解释:当没有足够的空闲共享内存去尝试缓冲一个新脚本时,将删除至少在shm_ttl秒以前没有被访问过的文件。默认值为”0″,表示不尝试从共享内存中删除任何旧的脚本。(单位为秒)    
——————–    
eaccelerator.shm_prune_period=”0″    
解释:当没有足够的空闲共享内存去尝试缓冲一个新脚本时,将删全部旧脚本,前提是这个尝试在超过shm_prune_period秒以前被执行过。默认值为”0″,表示不尝试从共享内存中删除任何旧的脚本。(单位为秒)    
——————–    
eaccelerator.shm_only=”0″    
解释:打开或者关闭在磁盘上缓存编译过的脚本。这个参数对会话数据和内容缓存没有效果。默认值为”0″,表示使用磁盘和共享内存来缓存。    
——————–    
eaccelerator.compress=”1″    
解释:打开或者关闭缓存内容压缩。”1″指打开,”0″指关闭。默认值为”1″。    
——————–    
eaccelerator.compress_level=”9″    
解释:内存压缩的级别。默认值为”9″,表示最大压缩。

#这个是我机器的so位置  
extension=”/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/eaccelerator.so”    
#这个是设置一个缓存大小    
eaccelerator.shm_size=”64″    
#缓存目录    
eaccelerator.cache_dir=”/usr/local/webserver/eaccelerator_cache” 实际配置不建议放在WEB目录下,考虑到安全因素建议放到web目录之外

#网站目录,把解开的eAccelerator 的源码包里的control.php 文件复制到你的WEB 服务器中的一个目录下,使其它以经过http 访问,若是不加那么看不到缓存的页面列表,可是仍是能够看到内存信息

eaccelerator.allowed_admin_path=/usr/www/

eaccelerator.enable=”1″  
eaccelerator.optimizer=”1″ (若是没有安装optimizer请设置为0关闭加速引擎,不然会出现PHP脚本错误)    
eaccelerator.check_mtime=”1″    
eaccelerator.debug=”0″    
eaccelerator.filter=”"    
eaccelerator.shm_max=”0″    
eaccelerator.shm_ttl=”0″    
eaccelerator.shm_prune_period=”0″    
eaccelerator.shm_only=”0″    
eaccelerator.compress=”1″    
eaccelerator.compress_level=”9″

eaccelerator.keys     = “disk_only”  
eaccelerator.sessions = “disk_only”    
eaccelerator.content  = “disk_only”

设置内容缓存的存放的地方,能够设置为:  
shm_and_disk 在共享缓存和硬盘(默认值)    
shm      默认存在共享内存,若是共享内存已满或大小超过 “eaccelerator.shm_max” 的值,就存到硬盘    
shm_only    只存放在共享内存    
disk_only    只存放在硬盘    
none      不缓存数据

这里为了查看效果设置为存在硬盘

增长权限

#mkdir /usr/local/webserver/eaccelerator_cache  
#chmod 777 /usr/local/webserver/eaccelerator_cache

3.测试查看phpinfo()

4.查看缓存文件夹

为了直观因此截图图形界面

这说明成功生成了缓存

5.更好的监控方式

eAccelerator控制面板的地址,安装包里有一个control.php文件,把它复制到网站的任意目录,能够用它查看和管理,这个必须指定,不然查看缓存内容的时候会出错,访问时候默认的用户名是:admin,密码:eAccelerator

注意,以前的php.ini配置文件加上这个配置就会看到明细信息

eaccelerator.allowed_admin_path=/usr/www/

重启apache则会清空缓存

文档:

eaccelerator.shm_size=”8″    
eAccelerator 可使用的共享内存的数量 (以MB为单位) . “0″ 是指操做系统的默认值,默认值是 “0″,可根据服务器的实际状况来调整:1六、3二、6四、128都是能够的。

eaccelerator.cache_dir=”/usr/local/webserver/eaccelerator_cache”    
这个目录是给磁盘缓存使用,eAccelerator 在这里储存预先编译好的代码,进程数据,内容以及用户的自定义内容。一样的数据也能被储存在共享内存中 (这样能够提升访问速度)

eaccelerator.enable=”1″    
开启或关闭 eAccelerator,”1″ 为开启,”0″ 为关闭。默认值为 “1″。

eaccelerator.optimizer=”1″ (若是没有安装optimizer请设置为0关闭加速引擎,不然会出现PHP脚本错误)    
启或关闭内部优化器,能够提高代码执行速度。”1″ 为开启,”0″ 为关闭。默认值为 “1″。

eaccelerator.check_mtime=”1″    
打开或者关闭 PHP 的文件修改检查,”1″ 是指打开,”0″ 是指关闭。默认值是 “1″。

eaccelerator.debug=”0″    
开启或关闭调试日志记录。”1″ 为开启,”0″ 为关闭。默认值为 “0″。会将缓存命中得记录写入日志。

eaccelerator.filter=”"    
判断哪些 PHP 文件必须缓存。能够指定缓存和不缓存的文件类型(如 “*.php *.phtml”等)若是参数以 “!” 开头,则匹配这些参数的文件被忽略缓存。默认值为 “”,即,全部 PHP 文件都将被缓存。

eaccelerator.shm_max=”0″    
当使用 ” eaccelerator_put() ” 函数时禁止其向共享内存中存储过大的文件。该参数指定容许存储的最大值,单位:字节 (10240, 10K, 1M)。”0″ 为不限制。默认值为 “0″。

eaccelerator.shm_ttl=”3600″    
当 eAccelerator 获取新脚本的共享内存大小失败时,它将从共享内存中删除全部在最后 “shm_ttl” 秒内没有存取的脚本缓存。默认值为”0″,为不从共享内存中删除任何缓存文件。

eaccelerator.shm_prune_period=”3600″    
当 eAccelerator 获取新脚本的共享内存大小失败时,他将试图从共享内存中删除早于”shm_prune_period” 秒的缓存脚本。默认值为 “0″,为不从共享内存中删除任何缓存文件。

eaccelerator.shm_only=”0″    
容许或禁止将已编译脚本缓存在磁盘上。该选项对 session 数据和内容缓存无效。默认值为 “0″,为使用磁盘和共享内存进行缓存。

eaccelerator.compress=”1″    
容许或禁止压缩内容缓存。默认值为 “1″,为容许压缩。

eaccelerator.compress_level=”9″    
指定内容缓存的压缩等级。默认值为 “9″,为最高等级。

eaccelerator.keys = “disk_only”    
eaccelerator.sessions = “disk_only”      
eaccelerator.content = “disk_only”      
设置内容缓存的存放的地方,能够设置为:    
shm_and_disk 在共享缓存和硬盘(默认值)    
shm      默认存在共享内存,若是共享内存已满或大小超过 “eaccelerator.shm_max” 的值,就存到硬盘    
shm_only    只存放在共享内存    
disk_only    只存放在硬盘    
none      不缓存数据

6.测试性能

快速排序代码

<?php

function quickSort($arr)

{

$len = count($arr);

if($len <= 1) {

return $arr;

}

$key = $arr[0];

$left_arr = array();

$right_arr = array();

for($i=1; $i<$len; $i++){

if($arr[$i] <= $key){

$left_arr[] = $arr[$i];

} else {

$right_arr[] = $arr[$i];

}

}

$left_arr = quickSort($left_arr);

$right_arr = quickSort($right_arr);

return array_merge($left_arr, array($key), $right_arr);

}

$arr = array(6,3,8,5,9,2,10);

echo '<pre>';

print_r(quickSort($arr));

?>

测试方法

#ab -n 1000 http://192.168.2.107/quicksort.php

连续测试几回,主要的性能指标是Requests per second

左边是没有使用eAccelerator 时的状况,右边是使用了的

连续测试10次,基本数据仍是比较稳定的。

使用了eAccelerator 时比没使用的要好!

使用strace查看C语言级别的php源码      

能够看eAccelerator缓存是怎么被读取的完成过程

扩展阅读:

eAccelerator提供以下的API接口和文件:(下述文件均在源码包的doc/php/目录下)

文件列表:

cache.php

dasm.php

encoder.php

info.php

loader.php

session.php

shared_memory.php

接口列表:

array eaccelerator_cached_scripts ()

void eaccelerator_cache_output (string $key, string $eval_code, [int $ttl = 0])

void eaccelerator_cache_page (string $key, [int $ttl = 0])

void eaccelerator_cache_result (string $key, string $code, [int $ttl = 0])

void eaccelerator_caching (boolean $flag)

void eaccelerator_clean ()

void eaccelerator_clear ()

array eaccelerator_dasm_file (mixed $filename)

mixed eaccelerator_encode (mixed $src, [mixed $prefix = ''], [string $pre_content = ''], [string $post_content = ''])

void eaccelerator_gc ()

mixed eaccelerator_get (string $key)

array eaccelerator_info ()

array eaccelerator_list_keys ()

void eaccelerator_load ()

boolean eaccelerator_lock (string $key)

void eaccelerator_optimizer (boolean $flag)

void eaccelerator_purge ()

boolean eaccelerator_put (string $key, mixed $value, [int $ttl = 0])

array eaccelerator_removed_scripts ()

boolean eaccelerator_rm (string $key)

void eaccelerator_rm_page (string $key)

boolean eaccelerator_set_session_handlers ()

boolean eaccelerator_unlock (string $key)

有关上述文档详细说明请参考官方文档

下面有部分网友翻译后的接口说明:

eaccelerator_put($key, $value, $ttl=0)    
   将 $value 以 $key 为键名存进缓存(php4下支持对像类型,看源码好像zend2里不支持了),$ttl 是这个缓存的生命周期,单位是秒,省略该参数或指定为 0 表示不限时,直到服务器重启清空为止。      
eaccelerator_get($key)      
   根据 $key 从缓存中返回相应的 eaccelerator_put() 存进去的数据,若是这项缓存已通过期或不存在那么返回值是 NULL      
eaccelerator_rm($key)      
   根据 $key 移除缓存      
eaccelerator_gc()      
   移除清理全部已过时的 key      
eaccelerator_lock($key)      
   为 $key 加上锁定操做,以保证多进程多线程操做时数据的同步。须要调用 eaccelerator_unlock($key) 来释放这个锁或等待程序请求结束时自动释放这个锁。      
   例如:      
   <?php      
     eaccelerator_lock(“count”);      
     eaccelerator_put(“count”,eaccelerator_get(“count”)+1));      
   ?>      
eaccelerator_unlock($key)      
   根据 $key 释放锁      
eaccelerator_cache_output($key, $eval_code, $ttl=0)      
   将 $eval_code 代码的输出缓存 $ttl 秒,($ttl参数同 eacclerator_put)      
   例如:      
   <?php eaccelerator_cache_output(‘test’, ‘echo time(); phpinfo();’, 30); ?>      
eaccelerator_cache_result($key, $eval_code, $ttl=0)      
   将 $eval_code 代码的执行结果缓存 $ttl 秒,($ttl参数同 eacclerator_put),相似 cache_output      
   例如:      
   <?php eaccelerator_cache_result(‘test’, ‘ time() . “Hello”;’, 30); ?>      
eaccelerator_cache_page($key, $ttl=0)      
   将当前整页缓存 $ttl 秒。      
   例如:      
   <?php      
     eaccelerator_cache_page($_SERVER['PHP_SELF'].’?GET=’.serialize($_GET),30);      
     echo time();      
     phpinfo();      
   ?>      
eaccelerator_rm_page($key)      
   删除由  eaccelerator_cache_page() 执行的缓存,参数也是 $key

二、PHP代码中使用eAccelerator加速

另外,在PHPCMS里面已经集成了对eAccelerator的支持,下面是一段来自PHPCMS里面的代码

class cache
{
    function __construct()
    {
    }

    function cache()
    {
		$this->__construct();
    }

    function get($name)
    {
        return eaccelerator_get($name);
    }

    function set($name, $value, $ttl = 0)
    {
        eaccelerator_lock($name);
        return eaccelerator_put($name, $value, $ttl);
    }

    function rm($name)
    {
        return eaccelerator_rm($name);
    }

    function clear()
    {
        return eaccelerator_gc();
    }
}

新一代 PHP 加速插件 Zend Opcache

你们知道目前PHP的缓存插件通常有三个:APCeAcceleratorXCache,但将来它们可能都会消失,由于PHP 5.5已经集成Zend Opcache,功能和前三者类似但又有少量不一样,缓存速度听说比它们更快(注意:只是听说,我没测试过)。

这几个PHP加速插件的主要原理都相同,就是把PHP执行后的数据缓冲到内存中从而避免重复的编译过程,可以直接使用缓冲区已编译的代码从而提升速 度,下降服务器负载,它们的效率是显而易见的,像drupal这种庞大的CMS,每次打开一个页面要调用数十个PHP文件,执行数万行代码,效率可想而 知,在安装APC等加速器后打开页面的速度明显加快。

Zend Opcache 已经集成在了PHP 5.5里面,编译安装PHP5.5的时候加上–enable-opcache就好了。但也支持低版本的 PHP 5.2.*, 5.3.*, 5.4.*,将来会取消对5.2的支持,下面是我在PHP 5.4下的安装方法:

依次执行下面的命令

wget http://pecl.php.net/get/zendopcache-7.0.2.tgz

tar xzf zendopcache-7.0.2.tgz

cd zendopcache-7.0.2

/usr/local/php/bin/phpize (此处根据实际php安装路径)

./configure --with-php-config=/usr/local/php/bin/php-config

make

make install

若是显示Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/ 表示安装完成,下面要修改php的配置文件让它生效

接着呢,配置下php.ini,在最后加上:

[opcache]

zend_extension=opcache.so

opcache.memory_consumption=128

opcache.interned_strings_buffer=8

opcache.max_accelerated_files=4000

opcache.revalidate_freq=60

opcache.fast_shutdown=1

opcache.enable_cli=1

opcache.enable=1

通常来讲,按照以往的经验,若是加在ZendGuardLoader以前会稳定多了。

128意思是给它分配128M内存,而后重启apache,用phpinfo查看是否生效,显示下面的信息就说明生效了

在phpinfo页面的下面能够看到的运行状态

若是嫌这个不直观能够装个PHP文件查看,地址在https://gist.github.com/ck-on/4959032,把上面的代码保存为一个php文件放到你的网站目录下面打开就能够看到:

命中率100%。


做者:夜阑小雨
原文连接:php Zend Opcache,xcache,eAccelerator缓存优化详解及对比
夜阑小雨版权全部,转载本网站文章时请保留此信息。

相关文章
相关标签/搜索