日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

企业——memcache对PHP页面的缓存加速优化

發(fā)布時(shí)間:2025/4/16 php 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 企业——memcache对PHP页面的缓存加速优化 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ?Memcache 是一個(gè)高性能的分布式內(nèi)存對(duì)象緩存系統(tǒng),用于動(dòng)態(tài)Web應(yīng)用以減輕數(shù)據(jù)庫(kù)負(fù)載。它通過(guò)在內(nèi)存中緩存數(shù)據(jù)和對(duì)象來(lái)減少讀取數(shù)據(jù)庫(kù)的次數(shù),從而提高了網(wǎng)站訪問(wèn)的速度。 MemCaChe是一個(gè)存儲(chǔ)鍵值對(duì)的HashMap,在內(nèi)存中對(duì)任意的數(shù)據(jù)(比如字符串、對(duì)象等)所使用的key-value存儲(chǔ),數(shù)據(jù)可以來(lái)自數(shù)據(jù)庫(kù)調(diào)用、API調(diào)用,或者頁(yè)面渲染的結(jié)果。MemCache設(shè)計(jì)理念就是小而強(qiáng)大,它簡(jiǎn)單的設(shè)計(jì)促進(jìn)了快速部署、易于開(kāi)發(fā)并解決面對(duì)大規(guī)模的數(shù)據(jù)緩存的許多難題,而所開(kāi)放的API使得MemCache能用于Java、C/C++/C#、Perl、Python、PHP、Ruby等大部分流行的程序語(yǔ)言。數(shù)據(jù)庫(kù)是是將數(shù)據(jù)存放在硬盤中,因此讀取的速度會(huì)相對(duì)于將數(shù)據(jù)存儲(chǔ)在內(nèi)存中的memcache來(lái)說(shuō)慢。

      

 

? ?傳統(tǒng)的Web應(yīng)用都將數(shù)據(jù)保存到RDBMS中,應(yīng)用服務(wù)器從RDBMS中讀取數(shù)據(jù)、處理數(shù)據(jù)并在瀏覽器中顯示。但是隨著數(shù)據(jù)量增大、訪問(wèn)的集中、就會(huì)出現(xiàn)RDBMS的負(fù)擔(dān)加重、數(shù)據(jù)庫(kù)響應(yīng)變慢、導(dǎo)致整個(gè)系統(tǒng)響應(yīng)延遲增加。而memcached就是為了解決這個(gè)問(wèn)題而出現(xiàn)的,memcached是一款高性能的分布式內(nèi)存緩存服務(wù)器,一般目的是為了通過(guò)緩存數(shù)據(jù)庫(kù)的查詢命中減少數(shù)據(jù)庫(kù)壓力、提高應(yīng)用響應(yīng)速度、提高可擴(kuò)展性。

?

二.memcache的配置

1.解壓memcache源碼包

  tar? zxf? memcache-2.2.5.tgz

?

2.將前邊php編譯完成的二進(jìn)制命令加入環(huán)境變量中,保證可以直接調(diào)用php命令

  vim ~/.bash_profile

    PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/php/bin
  source ~/.bash_profile  ##刷新環(huán)境變量

?

3.創(chuàng)建一個(gè)預(yù)編譯環(huán)境并進(jìn)行編譯匯編memcache源碼包

  phpize是用來(lái)擴(kuò)展php擴(kuò)展模塊的,通過(guò)phpize可以建立php的外掛模塊,比如你想在原來(lái)編譯好的php中加入memcached或者ImageMagick等擴(kuò)展模塊,可以使用phpize。

  phpize工具是在php安裝目錄下,基于這點(diǎn)phpize對(duì)應(yīng)了當(dāng)時(shí)的php環(huán)境,所以是要根據(jù)該php的配置情況生成對(duì)應(yīng)的configure文件,建立一個(gè)configure文件。必須在一個(gè)目錄下去運(yùn)行phpize,那么phpize就知道你的環(huán)境是哪個(gè)目錄,并且configure文件建立在該目錄下。

  cd memcache-2.2.5
  phpize
  Configuring for:
    PHP Api Version: 20131106
    Zend Module Api No: 20131226
    Zend Extension Api No: 220131226
  ./configure      ##源碼編譯,已經(jīng)安裝好了php,我們就不用再指定新的php擴(kuò)展模塊路徑
  make && make install

?

4.php的配置文件中添加memcache模塊

  cd /usr/local/lnmp/php/etc/
  vim php.ini
    873 extension=memcache.so      # 將873行memcache模塊的注釋打開(kāi)
  /etc/init.d/php-fpm reload
    Reload service php-fpm done
  php -m    ##查看php模塊
  php -m | grep memcache    ##過(guò)濾memcache模塊,發(fā)現(xiàn)已經(jīng)有了這個(gè)模塊
    memcache

  php -m | grep mysql    ##同時(shí)支持mysql
    mysql
    mysqli
    mysqlnd
    pdo_mysql

?

5.安裝memcache工具并啟動(dòng)memcache

  yum install -y memcahce

  /etc/init.d/memcached start

  netstat -antlp  ##查看端口信息  memcache的監(jiān)聽(tīng)端口是(11211端口)  如果有端口信息說(shuō)明工具開(kāi)啟成功

?

  

  注意:上面顯示的端口信息是,檢測(cè)所有11211端口的所有主機(jī),如果想只監(jiān)控本機(jī)則進(jìn)行以下修改(注意,這里只做介紹,實(shí)際只監(jiān)聽(tīng)本機(jī)是不合理的,此步驟不用做)

  vim /etc/sysconfig/memcached
    PORT="11211"
    USER="memcached"
    MAXCONN="1024"
    CACHESIZE="64"
    OPTIONS="-l 127.0.0.1"   ##修改此處,將信息修改為本機(jī)的回環(huán)接口的IP地址:127.0.0.1

  /etc/init.d/memcached restart
    Stopping memcached: [ OK ]
    Starting memcached: [ OK ]

  netstat -atnlp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 3855/memcached      ##顯示只監(jiān)聽(tīng)本機(jī)成功
    tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1251/nginx
    tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 910/sshd
    tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 986/master
    tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3807/php-fpm
    tcp 0 0 :::22 :::* LISTEN 910/sshd
    tcp 0 0 ::1:25 :::* LISTEN 986/master
    tcp 0 0 :::3306 :::* LISTEN 1210/mysqld

?

6.將測(cè)試文件cp到/usr/local/lnmp/nginx/html,設(shè)置memcached的密碼

  cd memcache-2.2.5
  cp memcache.php example.php /usr/local/lnmp/nginx/html/    ##用nginx當(dāng)做web服務(wù)器,將memcache的測(cè)試頁(yè)面放到相應(yīng)的發(fā)布目錄下面
  cd /usr/local/lnmp/nginx/html/
  vim memcache.php
    22 define('ADMIN_USERNAME','memcache');      ##用戶為memcache
    23 define('ADMIN_PASSWORD','westos');      ##設(shè)置密碼為westos // Admin Password
    28 $MEMCACHE_SERVERS[] = '172.25.79.1:11211';
    29 #$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211';?

?

  yum install -y telnet      ##為什么需要telnet?telnet就是查看某個(gè)端口是否可訪問(wèn)。有時(shí)候經(jīng)常要用的端口是 8080,那么你可以啟動(dòng)服務(wù)器,用telnet 去查看這個(gè)端口是否可用。

?  telnet?localhost 11211  ##

      

      

?

7.?測(cè)試:

  瀏覽器輸入:172.25.254.1:memcache.php

  輸入設(shè)置的賬戶和密碼

  然后重新打開(kāi)一個(gè)瀏覽器頁(yè)面,輸入172.25.254.1:example.php ,不斷刷新

      

  當(dāng)訪問(wèn)多次example.php后,查看命中情況會(huì)不斷提高,最后將會(huì)達(dá)到百分之百。 如下圖:

      

?

8.對(duì)頁(yè)面進(jìn)行壓力測(cè)試  (加速頁(yè)面example.php和沒(méi)加速index.php的對(duì)比(錯(cuò)誤率對(duì)比,相應(yīng)時(shí)間對(duì)比))

(1)訪問(wèn) index.php

  ab -c 10 -n 5000 http://172.25.254.1/index.php  ## ab是性能測(cè)試的一個(gè)工具,可用于web的并發(fā)測(cè)試

      ab常用參數(shù)的介紹:

      -n :總共的請(qǐng)求執(zhí)行數(shù),缺省是1;

      -c: 并發(fā)數(shù),缺省是1;

      -t:測(cè)試所進(jìn)行的總時(shí)間,秒為單位,缺省50000s

      -p:POST時(shí)的數(shù)據(jù)文件

      -w: 以HTML表的格式輸出結(jié)果

?

  注意:如果沒(méi)有ab這個(gè)命令,則可以安裝下包:yum install httpd-tools-2.2.15-29.el6_4.x86_64 -y

  

  可以看到所用時(shí)間為5s左右,出錯(cuò)個(gè)數(shù)為529個(gè):

      

?

?

(2)訪問(wèn) example.php

  ab -c 10 -n 5000 http://172.25.254.1/example.php

  可以看到所用時(shí)間為2s左右,出錯(cuò)個(gè)數(shù)為0個(gè),速度提高了,錯(cuò)誤率大大降低

      

?

?

?

?

      

?

轉(zhuǎn)載于:https://www.cnblogs.com/wf-aiyouwei/p/10679686.html

總結(jié)

以上是生活随笔為你收集整理的企业——memcache对PHP页面的缓存加速优化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。