日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

使用php數據緩存技術提高執行效率

瀏覽:238日期:2022-06-06 13:44:56
目錄
  • PHP 緩存介紹
    • 什么是緩存
    • 緩存作用
    • 常用緩存類型
  • PHP 常用內存緩存介紹
    • php opcode緩存
      •  php文件緩存

        為什么要使用php緩存技術?理由很簡單:提高效率。在程序開發中,獲取信息的方式主要是查詢數據庫,除此以外,也可能是通過Web Services或者別的某種方法,無論哪種方法,在大量的并發訪問面前,它們都可能成為效率的瓶頸,為了解決這些問題,人們提出了很多解決方案,其中一些是利用優化軟件(如:APC,Eaccelerator,Zend Optimizer等等)來提高程序的運行效率,合理的運用這些軟件,往往能使程序的運行效率得到數量級上的提升,但前提是你必須擁主機的控制權,以便能夠安裝這些軟件,如果你使用的是虛擬主機的話,那么只能祈禱你的服務提供商已經預裝了某個優化軟件,否則就必須自己使用PHP來實現相應的緩存功能。

        PHP緩存技術是一種解釋型語言,屬于邊編譯邊運行,包括PHP編譯緩存和PHP數據緩存兩種。PHP緩存,這種運行模式的優點是程序修改很方便,但是運行效率卻很低下。PHP編譯緩存針對這種情況做改進處理,使得PHP語言只要運行一次,就可以把程序的編譯結果緩存起來。這樣,接下來的每次運行都不需要再次編譯了,這大大提高PHP運行速度。

        PHP 緩存介紹

        什么是緩存

            數據交換的緩沖區(稱作Cache)
            臨時文件交換區

        緩存作用

            減少網絡延遲,加快頁面打開速度
            減少數據查詢次數,降低數據庫壓力
            降低系統負荷,極大的提升系統性能

        常用緩存類型

            文件緩存:使用 PHP 文件操作函數,把數據緩存到服務器磁盤文件中
            內存緩存:Redis、Memcached、MongoDB
            Opcode緩存:PHP 是一種解釋型腳本語言,在 PHP 執行過程中,虛擬機會把 PHP 代碼翻譯成中間語言,這種中間語言就叫 Opcode,然后虛擬機再把 Opcode 順序執行。把 PHP 代碼對應的 Opcode緩存到內存中,加速 PHP 執行,減少了代碼翻譯成中間語言這一步操作。

        文件緩存內存緩存Opcode緩存存儲介質磁盤文件內存內存不足IO操作慢、文件鎖的存在占內存、不持久部署代碼刷新慢應用舉例新聞數據、城市區域會員、商品、SessionOpcodeCache(代碼加速)

        PHP 常用內存緩存介紹

            PHP是一種腳本語言,腳本執行結束之后,所有的變量全部釋放掉,本身沒有能力將數據常駐內存。
            PHP借助于內存服務器將緩存數據儲存在服務器內存。
            優點:讀寫速度快、跨服務器存儲(例如在做多服務器集群的時候,可以將 Session 存儲于內存緩存服務器中)、易于解決主從同步問題,并發問題。
            不足:占用了內存空間、緩存數據有大小限制、數據不易持久化存儲。(但是內存緩存帶給我們的方便足夠可以忽略他的不足)
            常用內存緩存:Memcached、Redis、MongoDB

        MemcachedRedisMongoDB儲存數據類型stringstring, list, hash, setbson 豐富查詢方式數據儲存位置內存內存 + 硬盤內存 + 硬盤持久化最長30天RDB 文件快照,AOF(記錄寫操作)持久化journal持久化使用場景Session 商品緩存(緩存 < 1MB)緩存、隊列日志、區域信息、評論

        php opcode緩存

        PHP Opcode原理

        Opcode是一種PHP腳本編譯后的中間語言,就像Java的ByteCode,或者.NET的MSL,舉個例子,比如你寫下了如下的PHP代碼

        <?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腳本的功能。

         學過編譯原理的同學都應該對編譯原理中的詞法分析步驟有所了解,Lex就是一個詞法分析的依據表。 Zend/zend_language_scanner.c會根據Zend/zend_language_scanner.l(Lex文件),來輸入的 PHP代碼進行詞法分析,從而得到一個一個的“詞”,PHP4.2開始提供了一個函數叫token_get_all,這個函數就可以講一段PHP代碼 Scanning成Tokens;如果用這個函數處理前面的PHP代碼,將會得到如下結果:

        Array
        (
            [0] => Array
        (
           [0] => 367
           [1] => Array
        (
            [0] => 316
            [1] => echo
        )
            [2] => Array
        (
            [0] => 370
            [1] =>
        )
            [3] => Array
        (
            [0] => 315
            [1] => "Hello World"
        )
            [4] => ;
            [5] => Array
        (
            [0] => 370
            [1] =>
        )
            [6] => =
            [7] => Array
        (
            [0] => 370
            [1] =>
        )
            [8] => Array
        (
            [0] => 305
            [1] => 1
        )
            [9] => Array
        (
            [0] => 370
            [1] =>
        )
            [10] => +
            [11] => Array
        (
            [0] => 370
            [1] =>
        )
            [12] => Array
        (
            [0] => 305
            [1] => 1
        )
            [13] => ;
            [14] => Array
        (
            [0] => 370
            [1] =>
        )
            [15] => Array
        (
            [0] => 316
            [1] => echo
        )
            [16] => Array
        (
            [0] => 370
            [1] =>
        )
            [17] => ;
        )

        分析這個返回結果我們可以發現,源碼中的字符串,字符,空格,都會原樣返回。每個源代碼中的字符,都會出現在相應的順序處。而,其他的比如標簽,操作符,語句,都會被轉換成一個包含倆部分的Array: Token ID (也就是在Zend內部的改Token的對應碼,比如,T_ECHO,T_STRING),和源碼中的原來的內容。
          接下來,就是Parsing階段了,Parsing首先會丟棄Tokens Array中的多于的空格,然后將剩余的Tokens轉換成一個一個的簡單的表達式

        1.echo a constant string
        2.add two numbers together
        3.store the result of the prior expression to a variable
        4.echo a variable

          然后就改Compilation階段了,它會把Tokens編譯成一個個op_array, 每個op_arrayd包含如下5個部分:

        1.Opcode數字的標識,指明了每個op_array的操作類型,比如add , echo
        2.結果 存放Opcode結果
        3.操作數1 給Opcode的操作數
        4.操作數2
        5.擴展值1個整形用來區別被重載的操作符

          比如,我們的PHP代碼會被Parsing成:

        * ZEND_ECHO "Hello World"
        * ZEND_ADD ~0 1 1
        * ZEND_ASSIGN !0 ~0
        * ZEND_ECHO !0

         php文件緩存

        因為如果程序訪問數據庫時數據量較大,執行起來會比較慢。而且每一次刷新頁面都會訪問依稀數據庫,然后再把數據顯示在頁面上。 設置緩存也有一個缺點,那就是緩存時間要設置好,如果緩存時間較長,那么數據庫數據變化時,不能及時的在頁面上顯示。例如緩存不能用在秒殺商品,或者出售商品上面,因為數量不能及時的更新。

        <?php
        //緩存文件一般都放在caches文件夾里面。
        
        //定義一個該頁面的緩存文件路徑,也就是該緩存的文件放在哪個文件夾里面。
        
        $filename = "../cache/testhuancun.html";//定義了一個緩存的文件,文件名為testhuancun.html,位置在../cache文件夾里面。
        
        //設置一個緩存時間
        $time = 10;//代表緩存時間設置為10s.
        
        //判斷緩存文件是否存在
        if(!file_exists($filename) || filemtime($filename)+$time<time())
        //判斷文件是否存在,如果不存在,執行{}里面的代碼。還要判斷緩存時間有沒有過,如果已經過了,要重新讀取數據庫更新緩存。
        //filemtime($filename)讀取文件最后被修改的時間,time()取當前時間戳
        
        {
            //開啟內存緩存
            ob_start();//這里開啟內存緩存以后,下面要輸出的內容全部放在內存緩存里面。
        
            include("../init.inc.php");
            include("../DBDA.php");
            $db = new DBDA();
            $sql = "select * from nation";
            $attr = $db->Query($sql);
            $smarty->assign("nation",$attr);
            $smarty->display("test.html");
        
            //把內存里面的內容讀出來
            $nr = ob_get_contents();//ob就是代表的緩存,讀取的內容就是整個靜態頁面。
        
            //將讀到的內容存放到緩存文件
            file_put_contents($filename,$nr);//get是取出內容,put是往里放內容,把內存緩存的文件存到¥filename里面。
        
        
            //清除內存緩存
            ob_flush();//把內存緩存的內容清除掉,不讓它們繼續留在緩存內存里面,但是需要緩存的內容已經放在了$filename里面了,已經保存下來了。
        
            echo "#############################";//輸出內容加上一句話,觀察輸出內容是輸出的緩存頁面還是加載數據庫的頁面。這句話放在了ob_flush后面,不會被清除掉。
        }
        else//如果緩存文件存在,直接將緩存文件拿到頁面顯示。
        {
            include($filename);//將緩存的頁面加載到顯示頁面中
        }

        到此這篇關于使用php數據緩存技術提高執行效率的文章就介紹到這了,更多相關php數據緩存技術內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

        標簽: PHP
        日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
        视频在线观看一区| 亚洲欧美激情诱惑| 欧洲毛片在线视频免费观看| 麻豆精品少妇| 国产精品任我爽爆在线播放| 伊人久久一区| 日韩福利视频导航| 日韩一区二区三区精品视频第3页| 亚洲欧美综合| 麻豆久久精品| 98精品久久久久久久| 激情欧美日韩一区| 国产欧美日韩精品高清二区综合区 | 亚洲久久视频| 一区二区亚洲视频| 97人人精品| 性欧美69xoxoxoxo| 先锋影音久久久| 日韩欧美久久| 国产一区二区精品久| 亚洲性视频h| 国产日韩中文在线中文字幕| 国产欧美日韩一级| 国产一区亚洲| 国产精品久久国产愉拍| 久久在线电影| 国产调教一区二区三区| 日本精品不卡| 国产乱子精品一区二区在线观看 | 国精品一区二区| 色网在线免费观看| 五月亚洲婷婷 | 日韩中文字幕一区二区高清99| 日韩理论视频| av不卡在线看| 国产欧美日韩精品一区二区三区| 欧美国产美女| 蜜臀av在线播放一区二区三区| 日本大胆欧美人术艺术动态| 国产精品伊人| 久久亚洲图片| av资源亚洲| 国产精品xvideos88| 樱桃成人精品视频在线播放| 久久国产精品色av免费看| 99久久婷婷| 国产精品天天看天天狠| 国产精品日韩| 999国产精品| 成人精品国产亚洲| 欧美偷窥清纯综合图区| 免费日本视频一区| 午夜精品网站| 丰满少妇一区| 69堂精品视频在线播放| 国产一区日韩欧美| 超级白嫩亚洲国产第一| 国产日韩精品视频一区二区三区| 亚洲激情中文在线| 亚洲性色视频| 91精品观看| 国产精品7m凸凹视频分类| 日韩av专区| 国产日韩电影| 欧美日韩视频免费观看| 亚洲深夜视频| 丝袜av一区| 性欧美69xoxoxoxo| 日韩亚洲一区在线| 日韩理论片av| 亚洲夜间福利| 美女网站久久| 亚洲a级精品| 国产精品一级在线观看| 国产精品成人3p一区二区三区| 日韩福利视频导航| 久久不见久久见中文字幕免费 | 中文亚洲免费| 在线看片国产福利你懂的| 麻豆一区二区99久久久久| 久久人人97超碰国产公开结果| 亚洲激情中文| 国产乱人伦丫前精品视频| 偷拍欧美精品| 日本在线视频一区二区| 国产不卡人人| 在线日韩成人| 日本美女一区| 亚洲视频二区| 福利欧美精品在线| 日韩中文字幕麻豆| 91日韩欧美| 三级一区在线视频先锋| 麻豆国产精品一区二区三区| 99视频精品| 美女福利一区二区三区| 色8久久久久| 亚洲在线观看| 蜜臀av一区二区三区| 中文在线资源| 日韩一区三区| 私拍精品福利视频在线一区| 亚洲国产专区校园欧美| 欧美成人基地| 久久一区精品| 国产欧美一区二区三区精品观看| 欧美日韩国产在线一区| 亚洲福利专区| 亚洲二区免费| 亚洲成av在线| 亚洲1234区| 国产精品成人自拍| 日本少妇一区二区| 亚洲精品午夜av福利久久蜜桃| 男人操女人的视频在线观看欧美| 国产亚洲一级| 奇米色欧美一区二区三区| 蜜桃av一区二区三区电影| 亚洲一二三区视频| 天堂资源在线亚洲| 久久男人天堂| 亚洲精选久久| 成人在线网站| 中文字幕在线免费观看视频| 色综合视频一区二区三区日韩 | 亚洲精品成人| 电影亚洲精品噜噜在线观看 | 免费在线观看视频一区| 欧美日韩尤物久久| 一区二区电影| 欧美日韩国产传媒| 91精品国产自产精品男人的天堂| 午夜免费一区| 精品国产欧美日韩| 亚洲tv在线| 精品国产欧美日韩一区二区三区| 国产精品片aa在线观看| 亚洲欧美网站在线观看| 91欧美日韩在线| 国产精品毛片一区二区在线看| 黄色亚洲大片免费在线观看| 正在播放日韩精品| 久久亚洲黄色| 国产精品久久久久久久久久10秀| 精品美女久久| 久久精品卡一| 国产欧美日韩| 午夜国产欧美理论在线播放| 国产精品乱战久久久| 国产精品一区二区av交换| 日韩专区精品| 国产一区二区三区黄网站| 五月国产精品| 深夜福利一区| 国产精品资源| 国产精品欧美大片| 国产精选在线| 丝袜美腿诱惑一区二区三区| 亚洲精品888| 亚洲一区二区三区久久久| 国产欧美日韩精品一区二区三区 | 色婷婷久久久| 亚洲手机视频| 美女91精品| 日韩精品视频一区二区三区| 青草国产精品| 精品国产亚洲一区二区三区大结局| 成人在线免费观看网站| 少妇久久久久| 国产极品久久久久久久久波多结野| 日韩高清不卡一区| 亚洲国产影院| 亚洲精品护士| 国产精品对白久久久久粗| 午夜久久美女| 国产欧美三级| 九色porny丨国产首页在线| 亚洲日韩视频| 日韩av成人高清| 日韩高清在线一区| 九色porny丨国产首页在线| 日韩欧美一区二区三区在线视频| 欧美一区三区| 久久久久亚洲精品中文字幕| 日韩一区二区免费看| 亚洲欧美日韩国产| 九九精品调教| 人人精品人人爱| 综合色就爱涩涩涩综合婷婷| 蜜臀av亚洲一区中文字幕| 欧美久久天堂| 在线国产一区二区| 日韩欧美精品一区| 亚洲高清二区| 日韩伦理福利| 亚洲一区二区三区无吗| 日本色综合中文字幕| 亚洲精品伊人| 日韩精品诱惑一区?区三区| 91成人精品|