您好,登錄后才能下訂單哦!
PHP服務加速緩存優化
PHP緩存原理:
當客戶端請求一個PHP程序時,服務器的PHP引擎會解析改PHP程序,并將其編譯為特定的操作碼(Operate Code 簡稱 opcode),
改文件是執行PHP代碼后的一種二進制表示形式。默認情況下,這個編譯好的操作碼文件由PHP引擎執行后丟棄。而操作碼緩存的原理:
將編譯后的操作碼保存下來,并放到共享內存中,下一次調用PHP時重用。(節省了PHP引擎的編譯時間)
LA(N)MP環境PHP緩存加速器的原理:
1)apache(nginx)接收到客戶端的PHP程序訪問請求。
2)apache(nginx)把程序傳遞給PHP處理模塊libphp5.so(php的FCGI--php-fpm)進程。
3)PHP引擎(php-fpm進程)讀取磁盤上的PHP文件,并將器加載到內存中解析。
4)PHP處理模塊libphp5.so(php解析器php.ini)將PHP源碼編譯成cpdode,把cpcode緩存起來。
5)apache(nginx)接收到客戶端的請求后,PHP引擎直接讀取opcode文件。如果沒有找到則重復1-4步。建立緩存。
補充知識:
locale 計算機軟件運行的語言環境:
# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
locale 把按照所涉及到的使用習慣的各個方面分成12 大類,這12 個大類分別是:
語言符號及其分類(LC_CTYPE)
數字(LC_NUMBERIC)
比較習慣(LC_COLLATE)
時間顯示格式(LC_TIME)
貨幣單位(LC_MONETARY)
信息主要是提示信息,錯誤信息,狀態信息,標題,標簽,按鈕和菜單等(LC_MESSAGES)
行么書寫方式(LC_NAME)
地址書寫方式(LC_ADDRESS)
電話號碼書寫方式(LC_TELEPHONE)
度量衡表達方式(LC_MEASUREMENT)
默認紙張尺寸大小(LC_PAPER)
對locale 自身包含信息的概述(LC_IDENTIFICATION)
而這些信息的配置通常放在/usr/share/i18n/locales 目錄下。
部分軟件需求Perl.為了解決Perl的一些環境問題帶來錯誤。可以通過修改環境變量來避免。
# echo 'export LC_ALL=C' >> /etc/profile
# tail -1 /etc/profile
# source /etc/profile
安裝Perl相關的軟件依賴包 # yum install perl-devel 或 # yum install perl-CPAN
安裝 PHP XCache 緩存加速模塊
X Cache 把PHP程序編譯后的數據(opcode)緩存到共享內存里,避免相同的程序重復編譯。
用戶請求相同的PHP程序時,可以直接使用緩存中已編譯好的數據,提高訪問速度。
# wget https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.bz2 --no-check-certificate
# tar jxvf xcache-3.2.0.tar.bz2
# /application/php/bin/phpize
phpize 作用:用來擴展PHP擴展模塊的,通過phpize可以建立PHP的外掛模塊。
提供軟件包平臺環境分析和編譯安裝的必須的工具。
#./configure --enable-xcache --with-php-config=/application/php/bin/php-config
# make
# make install
# ll /application/php5.5.38/lib/php/extensions/no-debug-non-zts-20121212/
看看是否含有 xcache.so 表明 安裝是否完成。
安裝數據庫緩存及其它PHP擴展插件
memcached緩存軟件:mem內存 cache緩存。d 即daemon(服務器端進程模式服務)
memcached分2部分:服務器端(memcached)和客戶端(memcache)
一般場景:數據存放在數據庫中, web訪問的時候,要不停的訪問數據庫。加入memcached好處:通過自身內存中緩存
數據庫的查詢結果,減少數據庫的訪問次數,訪問內存比訪問硬盤效率要高。
memcached的服務的工作步驟:
1.先檢查memcached服務的緩存中是否存在。如果存在直接返回請求數據
2.memcached不存在數據,訪問數據庫
3.數據庫取出數據,返回給客戶端
4.同時把新取到的數據緩存一份給memcached服務緩存。備用。
memcache 客戶端PHP擴展插件(memcache2.2.7.tgz)
# wget http://pecl.php.net/get/memcache-2.2.7.tgz
# ./configure --enable-memcache --with-php-config=/application/php/bin/php-config
# make
# make install
# ll /application/php5.5.38/lib/php/extensions/no-debug-non-zts-20121212/
是否包含 memcache.so
安裝:PDO_MYSQL擴展模塊
下載地址:# wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
一般在編譯PHP的時候以參數的形式加入此模塊:--with-pdo-mysql=mysqlnd
如果源碼包編譯安裝和前面的安裝無異(略步驟)
平臺分析如下:
# ./configure --with-php-config=/application/php/bin/php-config --with-pdo-mysql-mysql=/application/mysql
安裝圖像處理程序及imagick 擴展模塊
安裝圖像軟件:ImageMagick
安裝imagick模塊
# wget http://pecl.php.net/get/imagick-3.4.3.tgz
# /application/php/bin/phpize
# ./configure --with-php-config=/application/php/bin/php-config
配置模塊生效:修改php.ini文件。把加載模塊的地址修改。
extension_dir = "/application/php/lib/php/extensions/no-debug-non-zts-20121212"
extension=memcache.so
extension=imagick.so
配置XCache 插件加速
1.首先修改 xcache 自帶的配置文件 xcache.ini ,然后將修改的文件添加到 php.ini(引擎文件)文件的后面
# grep -vE "^;|^$" /data/xcache-3.2.0/xcache.ini > xcache.ini.bak
其中主要修改:一下參數
xcache.size = 256M
xcache.count = 2
xcache.ttl = 86400
xcache.gc_interval = 3600
xcache.var_size = 64M
**** xcache.size 非0表示啟用緩存。后面的數值代表允許mmap(一種內存共享機制)的最大值
xcache.count 官方推薦服務器CPU的個數 # grep -c processor /proc/cpuinfo(匹配CPU個數)
xcache.ttl ttl(time to live) 設定cache對象的生存期
xcache.gc_interval 回收器掃描過期對象回收內存空間的時間間隔(如果設為0.則不回收,啟動緩存必須開啟回收)
xcache.var_size 變量的緩存
# cat xcache.ini.bak >> /application/php/lib/php.ini
因為 XCache 使用共享內存作為存儲空間,如果有必要可以調整共享內存大小參數。
# tail /etc/sysctl.conf
kernel.msgmnb = 65536
# Controls the maximum size of a message, in bytes
kernel.msgmax = 65536
# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
2.重新啟動PHP查看xcache加載情況
# pkill php-fpm
# /application/php/sbin/php-fpm
# /application/php/bin/php -v
PHP 5.5.38 (cli) (built: Feb 1 2017 22:43:58)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies
with XCache v3.2.0, Copyright (c) 2005-2014, by mOo
with XCache Cacher v3.2.0, Copyright (c) 2005-2014, by mOo
3.配置web界面的查看xcache緩存加速信息。
修改php.ini 文件中的
xcache.admin.user = "mOo" #把mOo 替換
xcache.admin.pass = "md5 encrypted password"
# 這里是利用md5算法生成加密串
例如:
# echo -n '123456' | md5sum
e10adc3949ba59abbe56e057f20f883e -
將內容替換成e10adc3949ba59abbe56e057f20f883e
引用xcache相關的頁面;
# cd /data/xcache-3.2.0
# cp -a ./htdocs/ /application/nginx/html/blog/xadmin
# chown -R nginx.nginx /application/nginx/html/blog/xadmin
# pkill php-fpm
# /application/php/sbin/php-fpm
下面附上 :壓測效果對比:(昨天為沒有加入xcache緩存的數據,右邊為加入xcache緩存效果)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。