使用opcache爲你的網站加速(轉載)

[文章做者:磨延城 轉載請註明原文出處: https://mo2g.com/view/137/ ]php

可能不少朋友在接觸PHP的時候或多或少了解到:PHP是腳本語言、一種解釋型語言,因此它不須要通過編譯就能運行,諸如此類. 這種說法雖然並不徹底正確,但對於初學者來講,這麼理解或許還比較合適,不只能快速入門,調試代碼還挺方便.但當你想要優化基於PHP開發的網站,以支持更高的併發訪問時,就得了解什麼是Opcodes.html

可能不少朋友在接觸PHP的時候或多或少了解到:PHP是腳本語言、一種解釋型語言,因此它不須要通過編譯就能運行,諸如此類。緩存

這種說法雖然並不徹底正確,但對於初學者來講,這麼理解或許還比較合適,不只能快速入門,調試代碼還挺方便。但當你想要優化基於PHP開發的網站,以支持更高的併發訪問時,就得了解什麼是Opcodes。bash

 默認狀況,PHP對每個請求,都會進行代碼解析、編譯等一系列處理生成對應的操做碼,最後經過Zend引擎執行。如圖所示:併發

沒有Opcodes緩存

引用Laruence的例子函數

1
2
3
4
5
<?php
echo  "Hello World" ;
$a  = 1 + 1;
echo  $a ;
?>

PHP執行這段代碼會通過以下4個步驟(確切的來講,應該是PHP的語言引擎Zend)
1.Scanning(Lexing) ,將PHP代碼轉換爲語言片斷(Tokens)
2.Parsing, 將Tokens轉換成簡單而有意義的表達式
3.Compilation, 將表達式編譯成Opocdes
4.Execution, 順次執行Opcodes,每次一條,從而實現PHP腳本的功能。php-fpm

Opcodes緩存的做用正是把編譯好的操做碼保存一段時間,讓Zend引擎在以後的請求中不用再次解析、編譯。如圖所示:啓用Opcodes緩存工具

當你在苦苦尋求加快PHP網站響應速度的方法時,我敢說緩存Opcodes就是你要找的方法之一,並且是最容易的。性能

本文介紹如何使用Opcache(原名Zend Optimizer Plus,簡稱O+)給PHP程序加速。O+是由Zend公司開發的一個PHP性能提高工具,不一樣於其餘Opcodes緩存工具, O+除了緩存Opcodes之外, 還作了不少的Opcodes優化。測試

從PHP5.5開始, O+已經隨着PHP的源代碼一塊兒發佈了。5.2以上的PHP版本也能夠經過編譯的方式,加載O+。下載地址http://pecl.php.net/zendopcache

相同配置下,使用Apache Benchmark進行壓力測試,O+的優化效果對好比下:

ab -c50 -t2 10.0.0.59/ab_test.php

開啓O+:Requests per second:    168.77 [#/sec] (mean)

關閉O+:Requests per second:    157.44 [#/sec] (mean)

提升了11.33

ab_test.php代碼以下:

1
2
3
4
5
6
7
8
9
<?php
$x  = 10000;
$arr  array ();
while ( $x ) {
     $arr [ $x ] =  $x --;
}
foreach $arr  as  $row ) {
     echo  "$row<br>" ;
}

接下來就把個人安裝流程貼出來,由於我是用yum搭建環境的,可能不適用於你的狀況,僅供參考。

1)下載、編譯、安裝

1
2
3
4
5
6
7
wget http: //pecl .php.net /get/zendopcache-7 .0.3.tgz
tar  zxvf zendopcache-7.0.3.tgz
cd  zendopcache-7.0.3/
phpize
. /configure
make
make  install

 

2)編輯php.ini,在文件底部添加配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
vi  /etc/php .ini
zend_extension= /usr/lib64/php/modules/opcache .so
;命令行模式是否開啓緩存功能,我建議不開啓
opcache.enable_cli=0
;共享內存大小, 這個根據大家的需求可調
opcache.memory_consumption=128
;interned string的內存大小, 也可調
opcache.interned_strings_buffer=8
;最大緩存的文件數目
opcache.max_accelerated_files=4000
;60s檢查一次文件更新
opcache.revalidate_freq=60
;打開快速關閉, 打開這個在PHP Request Shutdown的時候,回收內存的速度會提升
opcache.fast_shutdown=1
;不保存文件/函數的註釋
opcache.save_comments=0

3)讓php-fpm從新加載配置文件

1
/ect/init .d /php-fpm  reload

4)運行以下代碼

1
2
<?php
phpinfo();

若是能找到相似的文字提示,說明PHP已經成功加載了OPcache。立刻體驗一下,PHP網站是否是響應更快了呢?

with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies

相關文章
相關標籤/搜索