PHP 使用 APC 增進執行速度

时间:14-06-17 栏目:软件架构技术 作者:乐测网 评论:0 点击: 606 次

其實,如果單純講速度的話,其實 PHP 還真的不夠快,但為什麼其它語言會快呢?其實原因很多,但其實都不脫以下幾項:

1. 程式事先編譯好,而不是要用的時候才用 Interpreter 直譯出結果。
2. 東西能放記憶體的就放記憶體
3. 主機的硬體夠力(這個因素佔很大)

PHP 也有非常多方式可以幫自己加速,這邊我要推薦的是 APC 這個 PHP Extension。

安裝方法大家都會,甚至有些架站包都預設幫你裝好了,所以這邊就不贅述。這邊要提的是 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 來跑,而這樣速度也因此有了顯著的提升。

假設有一段程式碼如下:

 

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

這樣的優點是速度會變快,但小缺點是當程式有更動的時候,要 FLUSH OPCODE CACHE 才能看到程式修改後的結果(FLUSH OPCODE CACHE 的方式可以用 APC 內建的 Function 或是重新啟動 Web Server)。我在自己筆電上面灌好 MAMP ,把加速器換成 APC 然後 /Applications/MAMP/conf/php5.3/php.ini 裡面只加入一行設定:apc.stat=0 。印 Hello World 跑出來結果如下:

ab -c 10 -t 1 -k http://127.0.0.1/index.php

每秒大概處理 15597.49 個 request 。所以如果只印 Hello World 的話,其實 PHP 也不差 :P

不過我也得說明一下,我的 MBP 是 15″ 的 Intel Core i7 2.2GHz, 8GB RAM, 120GB SSD (哈,這樣算作弊嗎?) 另外,在我的 MBP 上,如果連線不 keep alive 的話,速度會降到 5793.44 req/sec ,但這是 tcp connection 和 apache 產生的 overhead ,就不要怪到 PHP 的速度上了。最後,有篇 Facebook 的 Slide 在講 APC 的細部調整,對 performance tuning 有興趣的,不妨一讀:PHP Tek 2008 : APC @ Facebook 。

声明: 本文由( 乐测网 )原创编译,转载请保留链接: PHP 使用 APC 增進執行速度

PHP 使用 APC 增進執行速度:等您坐沙发呢!

发表评论(需填写下方的验证回答,无用户名的评论将视为匿名发表,您也可以登陆或注册后再发表评论)

您必须 [ 登录 ] 才能发表留言!

@关注乐测网

-----==== 本站公告 ====-----
1.本站是目前唯一能支持智能手机平板电脑访问的软件测试技术网站.
2.具体访问方法请参考本站的手机访问说明,或直接点击以下链接:

→点击这里打开手机平板访问说明←

    智能手机平板电脑访问方法

1.用手机浏览器输入本站网址http://www.test666.com就可直接访问
2.微信、QQ、微博或手机浏览器的二维码扫描功能扫描以下二维码图

标签云球