PHP 使用 APC 增進執行速度之apc_stat=0。

jackxiang 2012-9-15 22:16 | |
PHP APC apc stat=0:

如果你覺得自己的 PHP 網站不快,可以在自己的 php.ini 裡面,load 進來 apc.so 後面加上 apc.stat=0 ,對樣對網站的效能會有顯著地提昇。原理是因為 APC 在每次讀取 PHP 程式碼的時候,都會先 stat() 程式碼所在的檔案,以確定要不要重新編譯成 OPCODE ,而 apc.stat=0 則是直接省略 stat() 的步驟,拿原本就有的 opcode 來用。

而當使用了 APC 並且設置 apc.stat=0 之後,其實網站在第一次編譯成 OPCODE 之後,除非重起或是清除快取,要不然就是會一直拿 OPCODE 來跑,而這樣速度也因此有了顯著的提升

当然重启动一下Apache也是可以自动再次加载一次的。


假設有一段程式碼如下:

PHP

則在背後 APC 的動作會像是上面這張圖一樣,可以看得出來 apc.stat=0 時,省了非常多的 stat() 。

来自:http://blog.roga.tw/2011/07/php-%E4%BD%BF%E7%94%A8-apc-%E5%A2%9E%E9%80%B2%E5%9F%B7%E8%A1%8C%E9%80%9F%E5%BA%A6%E3%80%82/
对比可见,当apc.stat=0时,省了很多系统内核调用,我们没有看到系统内核调用stat64了。其中,i3.php和i4.php分别是php的include_once和require_once函数调用,它要交给fstat()系统内核调用来检查文件是否打开过。单从性能角度出发的话,require比require_once性能更佳。

设置apc.stat_ctime的意义并是很大。如果apc.stat_ctime值为1时,仅当php源文件的创建时间(ctime)大于php源文件的最后修改时间(mtime)时,缓存对象的mtime时间会被php源文件的ctime所代替,否则缓存对象的mtime依然记录为php源文件的mtime。这样做是防止通过cvs, svn或者rsync等工具刷新php源文件的mtime,这样会导致APC通过比对php源文件的创建时间ctime来决定缓存对象有没有过期。我们推荐该保持默认值,即apc.stat_ctime = 0

http://www.perfgeeks.com/?p=298

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/5581/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2012-9-15 22:18
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]