php在執行的過程中究竟是如何處理高並發問題的,接下來我們具體的來看一下關於PHP高並發的一個解決方案。
先來看看php在伺服器的執行過程:當使用者請求伺服器php檔案的時候,伺服器將對php檔案進行文法分析,其次是解析,最後才運行。當php檔案有內容輸出時,該內容會先經過伺服器的php的緩衝區(buffer),然後再通過TCP傳遞到用戶端。(buffer其實就是緩衝區,一個記憶體位址空間,主要用於儲存資料區域)
可見,如果使用者直接存取靜態頁面的時候,伺服器的回應時間一般會比訪問動態檔案的時間短。如果我們能把使用者將要訪問的動態檔案先轉化為靜態檔案即可加快使用者訪問頁面的速度(擷取網頁的速度)。當然我們要注意靜態化的應用情境,頁面的靜態化主要應用於那些頁面內容不經常改動的頁面。
關於靜態化,PHP的靜態化分為:純靜態和偽靜態。其中純靜態又分為:局部純靜態和全部純靜態。這裡將的是全部純靜態。
頁面靜態化其中之一的方法是藉助PHP內建的緩衝區OB:
下面是頁面緩衝的簡單實現
<?php//可以根據 前端傳遞參數 COOKIE等進行緩衝$id = $_GET['id'];//設定緩衝檔案名稱$cache_name = md5(__FILE__) . '-' . $id . '.html';//失效時間$life = 3600;//判斷檔案是否存在以及是否到期if (file_exists($cache_name) && (filectime($cache_name) > time() - $life)) { include $cache_name; exit;}//開啟緩衝區ob_start();echo date('Y-m-d H:i:s');$content = ob_get_contents();ob_end_clean();//寫入到緩衝檔案file_put_contents($cache_name, $content);echo $content;
除了以上方法之外,我們可以利用架構內建的一些緩衝機制來實現