⑴ php怎麼使用緩存
假設要訪問add_friend.php,先查看緩存目錄下(假設為cache文件夾)下有沒有與add_friend.php對應的緩存文件(文件類型一般為php),若無則重新生成,若有,且緩存時間沒有過期則直接調用該緩存文件既可以,如果過期則重新生成
生成緩存文件則主要是採用正則替換的方式
⑵ php 數據緩存
1、普遍緩存技術:
數據緩存:這里所說的數據緩存是指資料庫查詢PHP緩存機制,每次訪問頁面的時候,都會先檢測相應的緩存數據是否存在,如果不存在,就連接資料庫,得到數據,並把查詢結果序列化後保存到文件中,以後同樣的查詢結果就直接從緩存表或文件中獲得。
用的最廣的例子看Discuz的搜索功能,把結果ID緩存到一個表中,下次搜索相同關鍵字時先搜索緩存表。
舉個常用的方法,多表關聯的時候,把附表中的內容生成數組保存到主表的一個欄位中,需要的時候數組分解一下,這樣的好處是只讀一個表,壞處就是兩個數據同步會多不少步驟,資料庫永遠是瓶頸,用硬碟換速度,是這個的關鍵點。
2、 頁面緩存:
每次訪問頁面的時候,都會先檢測相應的緩存頁面文件是否存在,如果不存在,就連接資料庫,得到數據,顯示頁面並同時生成緩存頁面文件,這樣下次訪問的時候頁面文件就發揮作用了。(模板引擎和網上常見的一些PHP緩存機制類通常有此功能)
3、 時間觸發緩存:
檢查文件是否存在並且時間戳小於設置的過期時間,如果文件修改的時間戳比當前時間戳減去過期時間戳大,那麼就用緩存,否則更新緩存。
4、 內容觸發緩存:
當插入數據或更新數據時,強制更新PHP緩存機制。
5、 靜態緩存:
這里所說的靜態緩存是指靜態化,直接生成HTML或XML等文本文件,有更新的時候重生成一次,適合於不太變化的頁面,這就不說了。
以上內容是代碼級的解決方案,我直接CP別的框架,也懶得改,內容都差不多,很容易就做到,而且會幾種方式一起用,但下面的內容是伺服器端的緩存方案,非代碼級的,要有多方的合作才能做到
6、 內存緩存:
Memcached是高性能的,分布式的內存對象PHP緩存機制系統,用於在動態應用中減少資料庫負載,提升訪問速度。
7、 php的緩沖器:
有eaccelerator, apc, phpa,xcache,這個這個就不說了吧,搜索一堆一堆的,自己看啦,知道有這玩意就OK
8、 MYSQL緩存:
這也算非代碼級的,經典的資料庫就是用的這種方式,看下面的運行時間,0.09xxx之類的
9、 基於反向代理的Web緩存:
如Nginx,SQUID,mod_proxy(apache2以上又分為mod_proxy和mod_cache)
10、 DNS輪詢:
BIND是一款開放源碼的DNS伺服器軟體,這個要說起來就大了,自己搜索去,大家知道有這個東西就行了。
⑶ PHP關於伺服器緩存的提問
一、除非你的整個WEB伺服器只做一個論壇使用,否則用APPLICATION裡面放論壇索引是不科學的。
二、每次都從資料庫裡面取也無可厚非,資料庫有自己查詢緩存系統,這樣的事情交給資料庫去做是對的,老是過份的考慮得這么細,在開發大型系統應用的時候會嚴重影響效率。
三、如果使用一般資料庫,希望進行一下優化,不用每次都在資料庫裡面取,也是可行的,方法是在編寫好每次都從資料庫裡面取的程序以後,進行如下兩個方面的變化:
1是在從資料庫裡面取數的地方,增加判斷是否存在相應的靜態html文件,如果存在就從文件裡面讀,否則從資料庫裡面取出來,並在輸出之前保存到html文件裡面,邏輯如下:
$cachefile='靜態html文件名.html';
if (file_exists($cachefile)) $out_str=file_get_contents($cachefile);
else{ $out_str='';//接著從資料庫裡面取出內容,並添加到字元串變數$out_str後面
$fp=fopen($cachefile,'w');fputs($fp,$out_str);fclose($fp);
}
echo $out_str;//輸出內容
2還需要修改所有針對上面的內容進行delete和update的程序,在修改資料庫之後增加刪除文件的功能,大致結構是:
$cachefile='靜態html文件名.html';
delete($cachefile);
⑷ php中資料庫的緩存是什麼意思怎麼理解伺服器端的緩存和瀏覽器里的緩存是一個原理嗎
第一個問題:
資料庫緩存
我們知道當網站訪問量很大的時候,用戶直接去訪問你的資料庫,這個時候資料庫壓力很大,往往會導致你的數據伺服器蹦了,或者伺服器崩了。
那麼這個時候的解決方案從資料庫來說,就是加上緩存層,那麼常用的緩存就是redis,memcache了,或者有人使用文件。
第二個問題:
伺服器端的緩存:
文件緩存屬於伺服器上的,redis或者memcache也是屬於你伺服器端的緩存
第三個問題:
瀏覽器緩存,我們知道當你訪問網頁的時候,瀏覽器會去給你緩存網頁,會把你網頁的靜態載入文件去緩存,你按f5刷新實際上第二次訪問的是你的瀏覽器的緩存,當然這個可以根據header頭的參數去改動,你按ctrl+f5就是強制刷新式的訪問,這個時候就會重新去請求伺服器拿文件了!
⑸ thinkphp的f方法怎樣獲得所有緩存
F方法的特點是:
簡單數據緩存;
文件形式保存;
採用PHP返回數據方式載入緩存;
支持子目錄緩存以及自動創建;
支持刪除緩存和批量刪除;
寫入和讀取緩存
F('data','test data');
默認的保存起始路徑是DATA_PATH(該常量在默認配置位於RUNTIME_PATH.'Data/'下面),也就是說會生成文件名為DATA_PATH.'data.php'的緩存文件。
注意:確保你的緩存標識的唯一,避免數據覆蓋和沖突。
下次讀取緩存數據的時候,使用:
$Data = F('data');
我們可以採用子目錄方式保存,例如:
F('user/data',$data); // 緩存寫入
F('user/data'); // 讀取緩存
就會生成DATA_PATH.'user/data.php' 緩存文件,如果user子目錄不存在的話,則會自動創建,也可以支持多級子目錄,例如:
F('level1/level2/data',$data);
如果需要指定緩存的起始目錄,可以用下面的方式:
F('data',$data,TEMP_PATH);
獲取的時候則需要使用:
F('data','',TEMP_PATH);
刪除緩存
刪除緩存也很簡單,使用:
F('data',NULL);
第二個參數傳入NULL,則表示刪除標識為data的數據緩存。
支持批量刪除功能,尤其是針對子目錄緩存的情況,假設我們要刪除user子目錄下面的所有緩存數據,可以使用:
F('user/*',NULL);
又或者使用過濾條件刪除,例如:
F('user/[^a]*',NULL);
⑹ php怎樣定時清除緩存,再重新生成新的緩存。
你的這個要求可以設置一個定時任務,在特定的時間點,清除緩存,再去生成新的緩存,我常用的就少用PHP 寫一個方法,然後在伺服器設置一個定時任務,去跑相應的方法就好了
⑺ PHP 有沒有必要做緩存
看你項目的需求,做緩存也是有開銷的,只不過相對查詢大量的數據效率來說,這種開銷就不值一提了
不能或者沒必要緩存的情況
(1)需要時時刷新數據的那種,像股票走勢啥的,這種就不能緩存
(2)數據量不大,也暫時不用考慮了
緩存的情況
(1)對數據准確度要求不高,沒有要求時時的數據
(2)數據量大,得考慮效率和時時數據,看情況而定
⑻ PHP開發中如何提高系統的穩定性和可靠性
PHP 應用的高性優化,很多時候我們把業務代碼做一些優化,反而是簡單又高效的。
業務的非同步解耦,比如,我們把耗時的多個分表數據的排行榜,通過其他服務做分布統計,然後再綜合,最終輸出到redis list中,那我們前端 PHP 在調用數據的時候,就不用實時計算了。
緩存的多級處理,業務復雜以後,經常看到一份相同的數據讀取 N 次,盡管是有緩存伺服器,但是讀取的時候也會有網路 I/O 的開銷,考慮到我們 PHP 一般使用場景下都是單進程,使用頻率高的,則應該優先使用進程內緩存。然後再本地緩存,然後再到網路緩存。
單例的運用,不要小看了對象的構造,很多時候我們在同一進程中,會發現同時構造了 N 多相同的對象。每一次的初始化都是一塊內存的開辟和 CPU 的消耗。
高性能,一個就是運行環境的優化,另一個是代碼本身的優化。
運行環境的優化,覆蓋面也很廣,包括系統層面的內核,文件系統類型,資料庫及緩存服務本身的性能優化,再到PHP解釋器的性能優化等等,PHP不同運行方式的差異(比如Apache模塊,還有PHP-FPM等等)。
代碼優化方面,我覺得可維護性和代碼可讀性的重要性大於高性能。代碼優化可以藉助profiling工具來分析,找到真實訪問條件下,處理瓶頸在哪裡,再去做針對性的優化。當然自己在初次設計和實現的時候,就需要做一定的整體考慮,例如怎麼設計能夠減少資料庫的查詢次數,如何減少重復的操作,了解同一問題的多種解決辦法哪一種效率更高(包括演算法上的差異,以及PHP的不同方式導致的差異等等),如何設計緩存來提高緩存命中率等等。有一些設計需要在體驗和效率上做個權衡。
保證穩定性,同樣也分運行環境和代碼本身。前者要對線上服務做完整的監控,這個有很多完善和強大的開源工具可以使用,保障基礎環境是穩定可控的,並且能夠及時發現問題,進行修復。至於代碼,除了盡量做完整的測試,開發的時候就需要考慮可能的問題。另外針對PHP,開發環境可以把error_reporting完全打開。還有需要知道常見的安全問題(XSS,SQL注入,CSRF,越權等),畢竟安全問題也是穩定的一部分。
⑼ php 中如何使用緩存,使用哪種緩存機制最好;
php的緩存三種.有文件緩存,資料庫緩存,memcache緩存;
memcache緩存要求對伺服器支持,而且它的緩存是由期限的,一般是30天。這種緩存的效率是最高的。讀存取的速度最快。
資料庫緩存
和
文件緩存比較簡單。適用小的項目。和php新手