1. 程式人生 > >為PHP新增memcache擴充套件模組

為PHP新增memcache擴充套件模組

Memcache

memcache是一套分散式的快取記憶體系統,由LiveJournal的Brad Fitzpatrick開發,但目前被許多網站使用以提升網站的訪問速度,尤其對於一些大型的、需要頻繁訪問資料庫的網站訪問速度提升效果十分顯著。

Memcache工作流程

先檢查客戶端的請求資料是否在memcached中,如有,直接把請求資料返回,不再對資料庫進行任何操作;如果請求的資料不在memcached中,就去查資料庫,把從資料庫中獲取的資料返回給客戶端,同時把資料快取一份到 memcached中(memcached客戶端不負責,需要程式明確實現);每次更新資料庫的同時更新memcached中的資料,保證一致性;當分配給memcached記憶體空間用完之後,會使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效資料首先被替換,然後再替換掉最近未使用的資料。
在這裡插入圖片描述


斷電或者重啟伺服器記憶體資料即消失,即臨時資料;
Memcache預設埠:11211
存入方式:key=>>value lengh(長度) time(過期時間)
注意:不只是字串,視訊,聲音,圖片,文字等等都可以存;
對比:
Apache –消耗Cpu,用的記憶體很少
Memcache-消耗記憶體比較多,CPU消耗較少

Memcache的安裝

如果安裝了memcached不安裝擴充套件,那麼php無法操控memcached,但是命令列使用起來沒有問題,如果安裝了memcache擴充套件但是沒有安裝memcached服務,那麼這個就無法使用 ,只有同時安裝了memcached服務和memcache擴展才可以在PHP中使用memcached提高動態網站效能

將Memcache新增至PHP

安裝Memcache

1:下載並解壓memcache原始碼包
在這裡插入圖片描述
2:將前邊php編譯完成的二進位制命令加入環境變數中,保證可以直接呼叫php命令
vim ~/.bash_profile
第十行寫入:
PATH= P A T H :

PATH: HOME/bin:/usr/local/mysql/bin:/usr/local/nginx/sbin:/usr/local/php/bin
在這裡插入圖片描述
source ~/.bash_profile
在這裡插入圖片描述
3:cd memcache-2.2.5
phpize
建立一個預編譯環境並進行編譯彙編memcache原始碼包
phpize是用來擴充套件php擴充套件模組的,通過phpize可以建立php的外掛模組,比如你想在原來編譯好的php中加入memcached或者ImageMagick等擴充套件模組,可以使用phpize。或者說,phpize的作用可以這樣理解:偵測環境(phpize工具是在php安裝目錄下,基於這點phpize對應了當時的php環境,所以是要根據該php的配置情況生成對應的configure檔案),建立一個configure檔案。必須在一個目錄下去執行phpize。那麼phpize就知道你的的環境是哪個目錄,並且configure檔案建立在該目錄下。
在這裡插入圖片描述
4:./configure ##因為之前已經編譯安裝好了php,我們就不用再指定新的php擴充套件模組路徑,直接執行./configure
5:make && make install
在這裡插入圖片描述
6:編譯完成後,提示我們進入php/extensions/no-debug-non-zts-20131226/目錄,在這個目錄中的我們可以檢視php中已經新增的模組,發現還沒有我們的memcache模組,因此我們去到php的配置檔案中新增memcache模組。
cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
php -m | grep memcache
在這裡插入圖片描述
可以看到,此目錄中現在還沒有memcache模組
7:新增模組
vim /usr/local/php/etc/php.ini
編輯873行:
extension=memcache.so
在這裡插入圖片描述
8:/etc/init.d/php-fpm reload ##重新載入php
9:再次進入/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/,過濾memcache
在這裡插入圖片描述
10:安裝服務端memcached
yum install memcached -y
在這裡插入圖片描述
11:/etc/init.d/memcached start
12:檢視memcached埠11211
netstat -antlp | grep memcached
在這裡插入圖片描述
13:cd memcache-2.2.5
14:cp memcache.php example.php /usr/local/nginx/html/
15:cd /usr/local/nginx/html/
16:設定memcached的密碼
vim memcache.php
在這裡插入圖片描述
17:將第23行的password改為自己想設定的密碼
第28行的mymemcache-server1改為localhost
然後註釋掉29行
在這裡插入圖片描述
18:在瀏覽器中分別訪問172.25.66.1/example.php與172.25.66.1/memcache.php
(1):172.25.66.1/example.php
在這裡插入圖片描述
(2):172.25.66.1/memcache.php
在這裡插入圖片描述
在這裡插入圖片描述
19:訪問測試,檢視安裝了memcache模組後,在瀏覽器處訪問安裝了memcache和未安裝memcache的網頁,檢視效能的變化
ab -c 10 -n 1000 http://172.25.66.1/example.php
在這裡插入圖片描述
在下面可以看到處理情況
在這裡插入圖片描述
可以看到每秒處理請求501次,一共處理1000個,失敗了120次
接下來我們再用同樣的方法測試訪問example.php
在這裡插入圖片描述
我們再看看處理情況
在這裡插入圖片描述
可以看到同樣是處理1000次請求,可以看到,每秒處理高達1874次,而且失敗0次,效率明顯高於訪問未安裝memcache的網頁