當前位置:首頁 » 文件管理 » php寫入緩存

php寫入緩存

發布時間: 2024-07-20 22:08:30

php thinkphp3.2設置緩存與使用緩存的問題

我先聲明本人沒有使用過ThinkPHP3.2。對thinkphp邏輯不是很懂

緩存的作用是減輕資料庫壓力和加快數據讀取速度。

首先,第一次進頁面緩存中肯定沒有數據,進入頁面後先判斷緩存中是否有數據,若有:則從緩存中獲取數據,若無:從資料庫獲取數據,並寫入緩存。第二次進來判斷的時候,緩存中就有數據了,直接從緩存中返回數據,不進行資料庫操作。

代碼:

functionindex(){
if(cache('user_list')){//緩存中有數據
$data=cache('user_list');
}else{//緩存中沒有數據
$data=db('user')->select();//資料庫查詢
cache('user_list',$data,3600);//存入緩存
}
$this->assign('data',$data);
return$this->display();
}

⑵ 深入Nginx + PHP 緩存詳解

以下是對Nginx中的PHP緩存進行了詳細的分析介紹 需要的朋友可以參考下

Nginx緩存 nginx有兩種緩存機制:fastcgi_cache和proxy_cache 下面我們來說說這兩種緩存機制的區別吧 proxy_cache 作用是緩存後端伺服器的內容 可能是任何內容 包括靜態的和動態的 fastcgi_cache 作用是緩存fastcgi生成的內容 很多情況是php生成的動態內容 proxy_cache 緩存減少了nginx與後端通信的次數 節省了傳輸時間和後端帶寬 fastcgi_cache 緩存減少了nginx與胡仿php的通信次數 更減輕了php和資料庫的壓力 proxy_cache 緩存設置

復制代碼 代碼如下: #注 proxy_temp_path和proxy_cache_path指定的路徑必須在同一分區 proxy_temp_path /data /proxy_temp_dir; #設置Web緩存區名稱為cache_one 內存緩存空間大小為 MB 天沒有被訪問的內容自動清除 硬碟緩存空間大小為 GB proxy_cache_path /data /proxy_cache_dir levels= : keys_zone=cache_one: m inactive= d max_size= g; server { listen ; server_name yourdomain ; index index index ; root /data /htdocs/; location / { #如果後端的伺服器返回 執行超時等錯誤 自動將請求轉發到upstream負載均衡池中的另一台伺服器 實現賣蘆故障轉移 proxy_next_upstream _ _ error timeout invalid_header; proxy_cache cache_one; #對不同的HTTP狀態碼設置不同的緩存時間 proxy_cache_valid h; #以域名 URI 參數組合成Web緩存的Key值 Nginx根據Key值哈希 存儲緩存內容到二級緩存目錄內 proxy_cache_key $host$uri$is_args$args; proxy_set_header Host $host; proxy_set_header X Forwarded For $remote_addr; proxy_pass //backend_server; expires d; } #用於清除緩存 假設一個URL為 通過訪問就可以清除該URL的緩存 location ~ /purge(/ *) { #設置只允許指定的IP或IP段才可以清除URL緩存 allow ; allow / ; deny all; proxy_cache_purge cache_one $host$ $is_args$args; } #擴展名以 php jsp cgi結尾的動態應用程序不緩存 location ~ * (php|jsp|cgi)?$ { proxy_set_header Host $host; proxy_set_header X Forwarded For $remote_addr; proxy_pass //backend_server; } access_log off; } }

fastcgi_cache緩存設置

復制代碼 代碼中做帶如下: #定義緩存存放的文件夾 fastcgi_cache_path /tt/cache levels= : keys_zone=NAME: m inactive= d max_size= G; #定義緩存不同的url請求 fastcgi_cache_key "$scheme$request_method$host$uri$arg_filename$arg_x$arg_y"; server { listen ; server_name example ; location / { root /; index index index index php; } location ~ (| php)$ { root /; fastcgi_pass : ; fastcgi_cache NAME; fastcgi_cache_valid h; fastcgi_cache_min_uses ; fastcgi_cache_use_stale error timeout invalid_header _ ; fastcgi_index index php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi conf; #設置緩存的過程中發現無法獲取cookie 經查需要定義這句話 fastcgi_pass_header Set Cookie; } log_format access $remote_addr $remote_user [$time_local] "$request" $status $body_bytes_sent "$_referer" "$_user_agent" $_x_forwarded_for ; access_log / }

總的來說 nginx的proxy_cache和fastcgi_cache的緩存配置差不多 memcache緩存 在討論memcache緩存之前 我們先了解下mysql的內存緩存吧 mysql的內存緩存可以在my cnf中指定大小 內存表和臨時表不同 臨時表也是存放內存中 臨時表最大的內存需要通過tmp_table_size= M設定 當數據查過臨時表的最大值設定時 自動轉為磁碟表 此時因需要進行IO操作 性能會大大下降 而內存表不會 內存滿了後 會提示數據滿錯誤 例

復制代碼 代碼如下: create table test ( id int unsigned not null auto_increment primary key state char( ) type char( ) date char( ) )engine=memory default charset=utf lishixin/Article/program/PHP/201311/21248

⑶ php 緩存方式有哪幾種呢 都在什麼情況下使用呢

PHP緩存技術 WEB程序獲取信息的方式主要是查詢資料庫,當資料庫不是很大的情況下不會有太大的問題.然而,隨著網站的發展,資料庫呈幾何級數的方式增長的時候,就會出現瓶頸.於是PHP緩存技術誕生了.PHP緩存技術工作時,當程序查詢數據的時候,會把相應的結果序列化後保存到文件中,以後同樣的查詢語句就可以不用直接查詢資料庫,而是從緩存文件中獲得。這一改進使得程序運行速度得以太幅度提升.
目前應用PHP緩存技術比較流行的方法主要是Adodb+Smarty這樣的黃金搭檔.
PHP緩存技術工作原理:
首先看看adodb提供的數據緩存功能:
1<?php
2include('adodb.inc.php'); # load code common to ADOdb
3$ADODB_CACHE_DIR = '/usr/ADODB_cache';
4$conn = &ADONewConnection('mysql'); # create a connection
5$conn->PConnect(' ','userid','','agora');# connect to MySQL, agora db
6$sql = 'select CustomerName, CustomerID from customers';
7$rs = $conn->CacheExecute(15,$sql);
8?> 如上,每次查詢數據的時候,會把相應的結果序列化後保存到文件中,以後同樣的查詢語句就可以不用直接查詢資料庫,而是從緩存文件中獲得。
再來看看Smarty提供的頁面緩存功能:
1<?php
2require('Smarty.class.php');
3$smarty = new Smarty;
4$smarty->caching = true;
5if(!$smarty->is_cached('index.tpl')) {
6 // No cache available, do variable assignments here.
7 $contents = get_database_contents();
8 $smarty->assign($contents);
9}
10$smarty->display('index.tpl');
11?>
12
如上,每次訪問頁面的時候,都會先檢測相應的緩存是否存在,如果不存在,就連接資料庫,得到數據,完成模板變數的賦值,顯示頁面,同時生成緩存文件,這樣下次訪問的時候緩存文件就發揮作用了,而不會再執行if塊的數據查詢語句了。當然,在實際使用中會有很多東西要考慮,比如,有效期的設置,緩存組的設置等等,具體可以查看Smarty手冊中有關緩存(caching)的相關章節。
以上兩個PHP流行組件緩存方式的側重點是不同的,對於Adodb的緩存而言,它緩存的是數據,對於Smarty的緩存而言,它緩存的是頁面。其他提供緩存功能的組件還有很多(如:PEAR::Cache_Lite等等),實際編程中使用哪個方案要具體情況具體分析,也可能會綜合使用。
使用這些組件內置的緩存方案有一個很明顯的好處是它們的實現對客戶端而言都很透明。只要進行必要的設置(如:緩存時間,緩存目錄等等)就可以了,而不用過多考慮實現緩存的細節問題,系統會根據設置自動管理緩存。但是其缺點也同樣明顯,因為每次請求仍然要用PHP解析一遍,效率和純靜態相比還是大打折扣,在大的PV面前還是不能滿足要求,在這種情況下,僅僅做動態緩存就不夠了,必須實現靜態緩存。
PHP,一門最近幾年興起的web設計腳本語言,由於它的強大和可伸縮性,近幾年來得到長足的發展,php相比傳統的asp網站,在速度上有絕對的優勢,想mssql轉6萬條數據php如需要40秒,asp不下2分鍾.但是,由於網站的數據越來越多,我們渴求能更快速的調用數據,不必要每次都從資料庫掉,我們可以從其他的地方,比方一個文件,或者某個內存地址,這就是php的緩存技術,也就是Cache技術.

⑷ thinkphp緩存文件寫入失敗是什麼原因

Thinkphp緩存文件寫入失敗,主要原因是沒有緩存文件夾(runtime)的管理許可權。

這種情況大部分出現在Linux伺服器中,Windows伺服器默認具備可寫許可權。

以Thinkphp5.0版本為例:

在Linux伺服器的情況下,它必須是具備可寫許可權才行,並且這種可寫許可權應該遞歸到所有子文件夾。

假設thinkphp放在 /home/www/thinkphp 目錄。

chomd -R 777 /home/www/thinkphp/runtime/

通過以上命令使runtime文件夾以及其子文件夾都具備可寫許可權。

⑸ php 緩存怎麼寫

PHP數據緩存常用頁面緩存 靜態緩存
php頁面緩存主要用到的是ob系列函數,如ob_start(),ob_end_flush(),ob_get_contents()
靜態緩存是指靜態化,直接生成HTML或XML等文本文件,有更新的時候重生成一次,適合於不太變化的頁面
給你個頁面緩存的例子
function page_cache($ttl = 0)
{
$ttl = $ttl ? $ttl : PAGE_TTL;//緩存時間,默認3600s
$contents = ob_get_contents();//從緩存中獲取內容
$contents = "<!--page_ttl:".(time() + $ttl)."-->n".$contents;
//加上自定義頭部:過期時間=生成時間+緩存時間
file_put_contents(PAGE_FILE, $contents);//寫入緩存文件中
ob_end_flush();//釋放緩存
}

⑹ thinkphp怎麼寫更新緩存功能

使用緩存的場景大概是符合這一點:數據改變的頻率不快。也就是說:一個數據,如果好幾個小時,甚至好幾天都不發生改變,那麼就可以使用緩存。 使用緩存的模式是這樣: if(緩存不存在) { 從資料庫中取出數據,存入緩存,然後給緩存設置一個時間 } else { 取出緩存中的數據 } 如果是數據基本上永遠都不變的話,那麼可以使用「頁面靜態化」的技術,「頁面靜態化」比「緩存」更加提高網站訪問的性能。
ThinkPHP在數據緩存方麵包括文件方式、共享內存方式和資料庫方式在內的多種方式進行緩存,通過插件方式還可以增加以後需要的緩存類,讓應用開發可
以選擇更加適合自己的緩存方式,從而有效地提高應用執行效率。目前已經支持的緩存方式包括:File、Apachenote、Apc、
Eaccelerator、Memcache、Shmop、Sqlite、Db、Redis和Xcache。
為了開發的方便,可以把緩存給去除。

1.找到ThinkPHPCommonconvention.php和ThinkPHPCommondebug.php

2.打開這兩個文件找到你想要的設置即可。

debug.php中
'TMPL_CACHE_ON'=>false, // 默認開啟模板緩存

復制代碼
convention.php中'
TMPL_CACHE_ON' => false, // 默認開啟模板編譯緩存 false 的話每次都重新編譯模板

'ACTION_CACHE_ON' => false, // 默認關閉Action 緩存

'HTML_CACHE_ON' => false, // 默認關閉靜態緩存

復制代碼
thinkphp 怎麼關閉全部緩存?(
APP_DEBUG=>true
DB_FIELD_CACHE=>false
HTML_CACHE_ON=>false

復制代碼
關閉ThinkPHP模板緩存

最後自己找見了,在config.php裡面加上一句
'TMPL_CACHE_ON' => false,
'TMPL_CACHE_ON' => false,

復制代碼
這樣每次運行都重新生成緩存

熱點內容
頻率計源碼 發布:2024-09-08 07:40:26 瀏覽:778
奧迪a6哪個配置帶後排加熱 發布:2024-09-08 07:06:32 瀏覽:100
linux修改apache埠 發布:2024-09-08 07:05:49 瀏覽:208
有多少個不同的密碼子 發布:2024-09-08 07:00:46 瀏覽:566
linux搭建mysql伺服器配置 發布:2024-09-08 06:50:02 瀏覽:995
加上www不能訪問 發布:2024-09-08 06:39:52 瀏覽:811
銀行支付密碼器怎麼用 發布:2024-09-08 06:39:52 瀏覽:513
蘋果手機清理瀏覽器緩存怎麼清理緩存 發布:2024-09-08 06:31:32 瀏覽:554
雲伺服器的優點與缺點 發布:2024-09-08 06:30:34 瀏覽:734
上傳下載賺錢 發布:2024-09-08 06:14:51 瀏覽:258