前面几篇文章提到了APC.不少人问我:APC是什么?这里作个比较全面的介绍:
APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”,但我我的以为应该叫”另外一个PHP缓存”.由于这个东西若是叫”可选PHP缓存”,容易给人一种可要可不要的,不怎么有用的错觉.
APC的主页是:<a href=”http://pecl.php.net/package/apc” mce_href=”http://pecl.php.net/package/apc”>http://pecl.php.net /package/apc</a>.目前的版本是3.0.14,经过PECL安装,须要php4.3.0或更高版本.
<b>APC的安装:</b>
通常是下载源代码而后phpize来编译安装,安装完之后在加上php.ini里加上
<coolcode>
extension=apc.so
</coolcode>
这么一行就好了.
<b>APC的使用</b>
APC的使用其实倒说不上.APC是个优化器,自安装之日起,就默默地在后台为您的PHP应用服务了.您的全部PHP代码会被缓存起来.
另外,APC可提供必定的内存缓存功能.可是这个功能并非十分完美,有报告说若是频繁使用APC缓存的写入功能,会致使不可预料的错误.若是想使用这个功能,能够看看apc_fetch,apc_store等几个与apc缓存相关的函数.
从PHP5.2开始,APC引入了一个小甜饼,解决了困扰你们已久的大文件上传的进度条问题.具体请看看我这篇<a href=”http://www.162cm.com/archives/406.html” mce_href=”http://www.162cm.com/archives/406.html”>blog</a>.
<b>APC的高级使用</b>
1.缓存期限:
APC的缓存分两部分:系统缓存和用户数据缓存.
系统缓存是自动使用的,是指APC把PHP文件源码的编译结果缓存起来,而后在再次调用时先对比时间标记。若是未过时,则使用缓存代码运行。默认缓存 3600s(一小时).可是这样仍会浪费大量CPU时间.所以能够在php.ini中设置system缓存为永不过时(apc.ttl=0).不过若是这样设置,改运php代码后须要restart一下您的web服务器(好比apache…).目前对APC的性能测试通常指的是这一层cache;
用户数据缓存由用户在编写php代码时用apc_store和apc_fetch函数操做读取、写入的.若是量不大的话我建议可使用一下.若是量大,我建议使用memcache会更好.
若是要享受APC带来的缓存大文件上传进度的特性,须要在php.ini中将apc.rfc1867设为1,而且在表单中加一个隐藏域APC_UPLOAD_PROGRESS,这个域的值能够随机生成一个hash,以确何惟一.具体例子请参见前面给出的连接.
2.状态控制和分析:
APC的源码包自带了一个apc.php;您能够将这个文件上传到web服务器的某个目录下,用浏览器访问,这会显示当前的状态.咱们能够从这里的表格分析当前的缓存情况,做出进一步优化.
apc-info-clublocalhost2.png
这是某test站点的状态.您能够慢慢分析,这个工具会提供不少有用的工具.好比您能够看到哪些文件常常被包含(访问),您缓存的哪一个变量常常被读取,或常常被更新等.
最后顺便提一句,有独立报告说,APC的代码缓存、优化效果要高出zend优化器.就算不是真的,他开源而又免费,实在是一个至关不错的选择.php