Php緩存和優化實戰
緩存原理:
當使用者請求一個php程式的時候,伺服器的php引擎根據用戶端請求解析php,并将其編譯的編碼為特定的操作碼,預設情況下,php解析完之後會自動丢棄這個解析的操作碼,而操作碼緩存會将使用者請求解析的源碼放到共享記憶體裡,友善下次調取,這樣就大大減少了cpu的負載量
LNMP php緩存過程
1首先用戶端向伺服器申請php請求
2服務端收到用戶端請求後,會将這個資訊交給php引擎,也就是fastcgi(php-fpm)進行處理,LAMP用的apache自帶的插件(libso)。
3php-fpm調用php解析器來讀取站點磁盤的php檔案,加載到記憶體中
4php解析器将php程式編譯成opcode檔案,然後緩存起來
5php程式将opcpde執行後,傳回給nginx,然後傳回用戶端
6nginx再次接受用戶端請求,會直接從opcode調取,這樣就不用執行第4部,友善簡潔
Php緩存加速器:
常見的有xcache,eAccelerator,zendOpcache,在企業中常用的還是xcache,其次是eAccelerator。
那麼現在開始安裝緩存加速軟體
環境準備:
就按照我之前的LNMP環境搭建了,有需要的可以看看文檔。
檢視nginx web版本
[root@localhost ~]# /application/nginx/sbin/nginx -v
nginx version: nginx/1.6.2
Php版本
[root@localhost ~]# /application/php/bin/php -v
PHP 5.3.28 (cli) (built: Apr 16 2016 03:56:50)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies
Mysql版本
[root@localhost ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.32 MySQL Community Server (GPL)
LNMP緩存提示:
不論是Apache還是nginx,最後都是通過php提供動态解析程式來進行的,不論是Apache的libphp5.so子產品模式,還是nginx的fastcgi模式,都是一樣的,php引擎優化都是一緻的,都是基于php服務(php.ini)來進行的,兩者之間無差異!
安裝php緩存加速器
那麼我在這裡直接用xcache緩存軟體了。
首先下載下傳xcache
[root@localhost xiaohu]# wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.bz2
[root@localhost xcache-3.2.0]# ./configure --enable-xcache --with-php-config=/application/php/bin/php-config
[root@localhost xcache-3.2.0]# make
Don't forget to run 'make test'. 出現這個成功,繼續install
[root@localhost xcache-3.2.0]# make install
Installing shared extensions: /application/php/lib/php/extensions/no-debug-non-zts-20090626/
檢視有沒有xcache.so檔案有代表成功
[root@localhost xcache-3.2.0]# ls -l /application/php/lib/php/extensions/no-debug-non-zts-20090626/xcache.so
-rwxr-xr-x. 1 root root 653772 4月 16 22:14 /application/php/lib/php/extensions/no-debug-non-zts-20090626/xcache.so
驗證xcache
修改php.ini 配置xcache
[root@localhost ~]# cd /application/php/lib/
[root@localhost lib]# ls
php php.ini
[root@localhost lib]# echo >>php.ini
[root@localhost lib]# echo ';xcache config by xiaohu 20160419--------------' >> php.ini
[root@localhost lib]# tail -2 php.ini
;xcache config by xiaohu 20160419--------------
編輯xcache.ini 修改相關配置參數
[root@localhost ~]# vim xiaohu/xcache-3.2.0/xcache.ini
将修改後的xcache加載到php.ini
[root@localhost ~]# cat xiaohu/xcache-3.2.0/xcache.ini >> /application/php/lib/php.ini
檢視修改的參數,隻修改了相關的參數