Total Pageviews

Monday, 16 July 2012

简单说说PHP的APC模块

APC模块有两部分功能:
1,缓存PHP源码编译后结果,这样每次执行PHP程序的时候,就无需重新读取和编译了,现在很多解释型高级语言都 有这个功能了,JAVA貌似做的更进一步,能在程序执行的过程中,根据程序执行的环境和频率来进行相应的优化。缓存编译结果对于WEB应用程序很有意义, 我之前看过一些比较大型的程序,每个http请求对应的PHP程序,会include几十个甚至上百个其他的PHP程序,使用strace对httpd进 程探测一下,就会发现有大量的open、read,stat等系统调用。启用apc后,将会大大减少上述系统调用。如果将apc.stat设置为0,还可 以进一步减少stat的调用,但此时如果更新PHP源码,是不会立即生效的,需要重启WEB服务器或者调用apc_clear_cache来清理一下 APC的缓存。在我的使用过程中,没发现什么问题,所以我认为,APC不需要改动任何代码,就可以显著提升性能,不用白不用。
2,单机的数据 缓存,简单来说,就像是一个Memcached一样,可以保存、读取、删除数据,操作也和Memcache类似。但APC的缓存是本地的,不能多个服务器 共享。因为无需网络通信,所以效率比Memcache更高。当需要缓存的数据量比较小的时候,APC具有一定的优势。
APC模块的官方技术文档参见: http://cn2.php.net/manual/en/book.apc.php