Alternative PHP Cache(APC) 是个 PECL 扩展,可以用于 Unix 和 Windows 服务器,它是直接安装在 Zend 引擎上的,如果请求正在进行且没有过期,它可以提供一种缓存系统,将请求重定向至已缓存的 Opcode。我记录一下我安装和使用的过程。以后还会记录其他的 PHP Opcode 缓存工具的安装和使用。

1.安装 APC 因为我是用 ubuntu,所以安装非常简单(Ubuntu 实在让我变的很懒了现在。。。)windows 的安装我就不介绍了。

sudo apt-get install php-apc

直接搞定,呵呵,如果你有安装 pecl 的话 sudo pecl install apc 应该也是可以直接安装的(没有验证)。 安装以后更新 php.ini 文件,当然 ubuntu 是安装以后会在/etc/php5/apache2/conf.d 下面生成 apc.ini 配置文件的。但是里面只是加载了 apc 的模块而已。 然后重启你的 apache 服务,编写一个 php 文件,里面写上 phpinfo(); 打开浏览器,查看如果有 APC 模块的话,那说明已经安装好了。

PHP-AP

2.测试并简单使用一下 APC 在 php.ini 文件中配置一下,开启 APC,这里只是简单的开启配置,具体下面会有详细的配置项说明。我就自己修改 apc.ini

extension = apc.so
apc.enable = 1

保存重启服务就可以开启了。 写一段测试脚本

$max = 10000;
$x = 0;
$array = array();
<p>while($x < $max){
    $array[x] = $x;
    $x++;
}
<p>foreach($array as $k){
    echo "$k";
}<br />

然后用 ab 模拟 10000 次请求,记录下结果(这里我就不截图了)

ab -n 10000 -c 10 http://localhost/test.php

然后在关闭 APC(apc.enable = 0),同样 ab 模拟请求,比较一下结果,会发现 web 服务器每秒可以执行的请求和相应的时间 2 者有很大的差别,说明 APC 确实提高了不少性能。

3.APC 常用配置

当然还有其他的配置,这个只是我在网上复制粘贴来的

apc.enabled 布尔型

apc.enabled 可以被设成 0 来禁用 APC。这主要是有用的,当 APC 被静态编译入 PHP 时,因为没有其它方法来禁用它(当编译为 DSO 的时候,可以将 php.ini 中的 extension 行注释掉)。

apc.shm_segments 整型

对编译缓存分配共享内存块的数量。如果 APC 用光了共享内存,而且你已经设置 apc.shm_size 为系统允许的最大值的情况下,你可以试着去提高这个参数的值。

apc.shm_size 整型

每个共享内存块的大小是以 MB 为单位的。在默认情况下,一些系统(包括大多数 BSD 变种系统)的共享内存块的大小限制的很低。

apc.optimization 整型

优化等级。设为 0 则禁用优化,越高的值使用越强有力的优化。期待有适度的速度上的改进。这个还是实验性质的。

apc.num_files_hint 整型

对在你的 Web 服务器上被包含和请求的不同的源文件的数量的提示。如果你无法确定,设置为 0 或者省略;这个设置主要可能用于有成千的源文件的站点。

apc.ttl 整型

当一个缓存条目在缓存区的位置被另一个条目需要时,我们需要考虑的是这个缓存条目在缓存区的位置被允许空闲的秒数。将这个参数设置为 0 意味着你的缓存可能 充满不新鲜的条目,同时导致新的条目无法被缓存。

apc.gc_ttl 整型

缓存条目在垃圾收集列表中存活的秒数。这个值提供了出错保护在执行一个缓存源文件,而同时服务器进程死了的事件中。如果那个源文件被修改,内存分配给旧版 本的缓存条目将不会被回收,直到这个参数设定的 TTL 值到的时候。设置为 0 就是禁止这个特性。

apc.cache_by_default 布尔型

默认为 On,但可以被设置为 Off 并和以加号开头的 apc.filters 配合使用,文件仅仅在匹配过滤器时才被缓存。

apc.filters 字符串

一个以逗号分割的 POSIX 扩展正则表达式的列表。如果任何模式匹配源文件名,这个文件将不会被缓存。注意用来匹配的文件名是传递给 include/require 的文件名,而不是绝对路径。如果正则表达式的第一个字符是 + ,则这个表达式就意味着任何匹配表达式的文件将会被缓存,如果第一个字符是 – 则任何匹配都不会被缓存。 – 是默认值,所以可以被省略。

apc.slam_defense 整型

在非常繁忙的服务器上,无论你启动服务还是修改文件,你都会导致一种多进程都试图在同一个时间缓存同一个文件的竞争。这个选项设置了进程跳过试图去缓存一 个未被缓存的文件的百分比。或者可以把这个想象成一个单独进程跳过缓存的机率。例如,设置 apc.slam_defense 为 75 就意味着进程有 75%的 机率不去缓存未被缓存的文件。所以,设置的越高,越能减少缓存的碰撞机率。设置为 0 则禁用这个特性。

4.APC 管理工具 我是在/usr/share/doc/php-apc 下面找到 apc.php.gz 的,直接解压会得到 apc.php 把这个文件放到你的 web 目录下,直接访问。主页上包含常用的内存类型,文件缓存信息,内存使用信息等等,这个管理工具还是蛮强大的。

AP

转载请注明: 转载自Ryan 是菜鸟 | LNMP 技术栈笔记

如果觉得本篇文章对您十分有益,何不 打赏一下

谢谢打赏

本文链接地址: APC 的安装和试用记录

知识共享许可协议 本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可