• 每天进步一点点!

文章分类

推荐网站

常用手册

Alternative PHP Cache (APC) 的配置及使用【原创】

<<返回

2013-05-12 09:49:51

简介

Alternative PHP Cache (APC) 是一个开放自由的PHP opcode 缓存。它的目标是提供一个自由、 开放,和健全的框架用于缓存和优化PHP的中间代码。它是一个PECL扩展,APC直接安装在Zend引擎上,如果请求且并没过期,他可以提供一种缓存系统,将请求重定向到已缓存的Opcode,APC使用共享内存和映射表来为特定的PHP脚本获取Opcode。

 

安装

APC是一个PECL扩展,可以用pecl命令来安装

pecl install apc

在PHP.ini中添加 extension=apc.so

重启web服务器用phpinfo(),查看是否已经有了apc扩展。

如果看到类似下图,说明安装成功了

 

 

实例测试

首先我们先禁用apc,在php.ini中找到我们刚添加的extension=apc.so,再其下面添加一行:apc.enabled = 0,重启web服务器,phpinfo()看一下:

 

 

下面我们用ab对下面这段代码进行基准测试。

<?php
$array = array();
         
$count = 100000;
         
for($i = 0; $i < $count; $i++) {
    $array[] = $i;
}
         
for($i = 0; $i < $count; $i++) {
    print_r($i);
    echo "<br /-->";
}
ab -n 100 www.test.com/index.php

 

 

下面我们开启apc,将php.ini中的apc.enabled = 0改为apc.enabled = 1重启web服务器,查看phpinfo();

 

 

下面用ab再次对刚才的代码进行基准测试。

ab -n 100 www.test.com/index.php

 

 

可以看到我们仅是开启了apc,现在就有了一些效果。我们看到,运行总时间由未使用apc前的的9.420377秒下降到了8.514684秒,每秒钟可以支持的请求数由原来的10.62上升到了11.74。我们用apc的默认配置,使得性能有了一些提高。要判断速度是否可以进一步提高,需要深入研究apc设置并决定应该启用或禁用哪些配置来提高性能。下表给出了apc的常用设置。

 

属性名称

说明

apc.cache_by_default 

默认启用缓存。1表示“启用”,0表示“禁用”

apc.filters 

根据逗号分隔的POSIX正则表达式判断文件需要缓存还是不需要缓存。以a+开头的正则
表达式将强制APC不缓存与此正则表达式匹配的任何文件。以a-开头的正则表达式将强制
APC缓存与此正则表达式匹配的任何文件

apc.stat 

启用或禁用APC对于所有请求PHP脚本是否有更改的检查。每次调用脚本时均会执行此
过程。如果禁用该设置,在对PHP脚本进行任意更改后均需要重新启动WEB服务器以
清除缓存并更改脚本内容。0=禁用,1=启用,默认1

apc.enabled

启用或禁用APC缓存。0=禁用,1=启用,默认1

apc.shm_size 

设置APC允许使用的共享内存大小,此值以兆字节为单位

apc.shm_segments 

设置可用的共享内存段总数

apc.include_once_override

启用或禁用include_once和require_once的优化。启用该设置时,可减少PHP内部函数进行的额外系统调用。0=禁用,1=启用,默认0

apc.optimization 

设置优化级别。0=禁用优化功能

apc.num_files_hint

设置你认为需要缓存的文件数。默认值1000,如果不确定文件数,可以设置0

apc.ttl 

设置文件存储在缓存中的过期时间,以秒为单位。

apc.write_lock 

开启该设置将强制单个进程缓存特定的脚步。适用于必须缓存多个文件的大流量WEB服务器或应用程序

 

 

我们针对刚才的代码进行apc设置,在php.ini中设置apc的配置,找到apc.enabled = 1这一行,在下一行加上如下配置,重启web服务器,在进行一次基准测试,看下效果。

apc.enabled = 1
apc.stat = 0
apc.shm_size = 16
apc.optimization = 9
apc.num_files_hint = 1
apc.write_lock = 1
ab -n 100 www.test.com/index.php

 

 

可以看到性能又提高了一些。为了达到最佳效果需要对上面的设置进行尝试,找到比较理想的值。

当然,apc不仅可以缓存Opcode,它还可以缓存变量。将在后续介绍。。。

 

文章评论

  • 暂无评论

发表评论

昵称:

内容:

发表评论