APC简介

Alternative PHP Cache (APC) 是一个开放自由的PHP opcode 缓存。它的目标是提供一个自由、 开放,和健全的框架用于缓存和优化PHP的中间代码(Opcodes)。

APC优化了PHP运行中的编译过程,使得性能得到大幅优化。

php运行步骤
1.Scanning ,将PHP代码转换为语言片段(Tokens)
2.Parsing, 将Tokens转换成简单而有意义的表达式
3.Compilation, 将表达式编译成Opcodes
4.Execution, 顺次执行Opcodes,每次一条,从而实现PHP脚本的功能。

安装
sudo yum install php-pecl-apc

测试 loop 4×1000 times

开启apc前
avg:0.0003088116645813
开启apc后
avg:0.0001685023307800(耗时仅为原来的54%)

引用开发者的一段话

APC will probably be 20-30% faster, but if you are writing to it frequently it can cause problems. The APC cache is best for things that change very rarely. And by very rarely I mean days, not hours or minutes.

Because of the way APC does an anonymous file-backed mmap where I unlink the file at startup to get process-death protection, it isn’t easy to get at the cache from a separate standalone command line script. That can be solved by mmap’ing slightly differently, but in the default config your approach won’t work.

-Rasmus

大概含义如下:
使用APC可能会快20~30%左右,但频繁的读写会产生问题。APC最适合缓存很少更改的数据,很少的意思是几天,而不是几小时,几分钟!
由于APC采用基于文件的mmap,当启动获取进程锁保护时,就会删除这个文件,所以,在独立的命令行脚本中,并不容易获取到APC缓存。
但它可能通过另外一种略微不同的方式解决,但在默认的配置下,是无法获取到的。


配置
sudo vim /etc/php.d/apc.ini