解析php中memcache的應(yīng)用
更新時間:2013年06月18日 09:10:04 作者:
本篇文章是對php中memcache的應(yīng)用進行了詳細(xì)的分析介紹,需要的朋友參考下
所需環(huán)境:
php 5.3.3
apache 2.2.7
mysql 5.5.8
相關(guān)文檔下載:點擊下載
解壓Memcached_1.2.5文檔,cmd下執(zhí)行memcached.exe -d -install
將php5.3_vc6_memcachedll文檔解壓,將php_memcache.dll文件復(fù)制到php安裝目錄的ext文件目錄中。
然后在php.ini 當(dāng)中填上這句話:extension="php_memcache.dll"
在phpinfo()下查看,是否引用了memcache擴展。
測試代碼:
<?php
//連接
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
//保存數(shù)據(jù)
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br />";
//替換數(shù)據(jù)
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
//保存數(shù)組
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
//刪除數(shù)據(jù)
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
//清除所有數(shù)據(jù)
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
//關(guān)閉連接
$mem->close();
$memcachehost = '192.168.10.1';
$memcacheport = 11211;
$memcachelife = 60;
$memcache = new Memcache;
$memcache->connect($memcachehost,$memcacheport) or die ("Could not connect");
$query="select * from user limit 10";
$key=md5($query);
if(!$memcache->get($key))
{
$conn=mysql_connect("192.168.30.1","root","passwd");
mysql_select_db(users);
$result=mysql_query($query);
while ($row=mysql_fetch_assoc($result))
{
$arr[]=$row;
}
$f = 'db';
$memcache->add($key,serialize($arr),0,30);
$data = $arr ;
}
else{
$f = 'mem';
$data_mem=$memcache->get($key);
$data = unserialize($data_mem);
}
echo $f;
echo "";
//print_r($data);
foreach($data as $a)
{
echo $a[user_id]._.$a[email];
echo "";
}
?>
新聞系統(tǒng)的應(yīng)用:
//==============memcache
$memcachehost = '127.0.0.1';
$memcacheport = 11211;
$memcachelife = 60;
$memcache = new Memcache;
$memcache->connect($memcachehost,$memcacheport) or die ("Could not connect");
//==============新聞
$sql="SELECT id,title,left(title,16) as biaoti,date_time FROM `p_newsbase` where shenhe='1' order by id DESC limit 7 ";
$query=$db->query($sql);
$key=md5($query);
while($row_news=$db->fetch_array($query)){
$str=$row_news['biaoti'].$db->time_out($row_news['date_time']);
$sm_news[]=array("name"=>$str,"title"=>$row_news['title'],"id"=>$row_news['id'],"date_time"=>$row_news['date_time']);
}
if(!$memcache->get($key)){
$memcache->add($key,serialize($sm_news),0,$memcachelife);
}else{
$data_mem=$memcache->get($key);
$sm_news = unserialize($data_mem);
}
$smarty->assign("sm_news",$sm_news);
php 5.3.3
apache 2.2.7
mysql 5.5.8
相關(guān)文檔下載:點擊下載
解壓Memcached_1.2.5文檔,cmd下執(zhí)行memcached.exe -d -install
將php5.3_vc6_memcachedll文檔解壓,將php_memcache.dll文件復(fù)制到php安裝目錄的ext文件目錄中。
然后在php.ini 當(dāng)中填上這句話:extension="php_memcache.dll"
在phpinfo()下查看,是否引用了memcache擴展。
測試代碼:
復(fù)制代碼 代碼如下:
<?php
//連接
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
//保存數(shù)據(jù)
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br />";
//替換數(shù)據(jù)
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
//保存數(shù)組
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
//刪除數(shù)據(jù)
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
//清除所有數(shù)據(jù)
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
//關(guān)閉連接
$mem->close();
$memcachehost = '192.168.10.1';
$memcacheport = 11211;
$memcachelife = 60;
$memcache = new Memcache;
$memcache->connect($memcachehost,$memcacheport) or die ("Could not connect");
$query="select * from user limit 10";
$key=md5($query);
if(!$memcache->get($key))
{
$conn=mysql_connect("192.168.30.1","root","passwd");
mysql_select_db(users);
$result=mysql_query($query);
while ($row=mysql_fetch_assoc($result))
{
$arr[]=$row;
}
$f = 'db';
$memcache->add($key,serialize($arr),0,30);
$data = $arr ;
}
else{
$f = 'mem';
$data_mem=$memcache->get($key);
$data = unserialize($data_mem);
}
echo $f;
echo "";
//print_r($data);
foreach($data as $a)
{
echo $a[user_id]._.$a[email];
echo "";
}
?>
新聞系統(tǒng)的應(yīng)用:
復(fù)制代碼 代碼如下:
//==============memcache
$memcachehost = '127.0.0.1';
$memcacheport = 11211;
$memcachelife = 60;
$memcache = new Memcache;
$memcache->connect($memcachehost,$memcacheport) or die ("Could not connect");
//==============新聞
$sql="SELECT id,title,left(title,16) as biaoti,date_time FROM `p_newsbase` where shenhe='1' order by id DESC limit 7 ";
$query=$db->query($sql);
$key=md5($query);
while($row_news=$db->fetch_array($query)){
$str=$row_news['biaoti'].$db->time_out($row_news['date_time']);
$sm_news[]=array("name"=>$str,"title"=>$row_news['title'],"id"=>$row_news['id'],"date_time"=>$row_news['date_time']);
}
if(!$memcache->get($key)){
$memcache->add($key,serialize($sm_news),0,$memcachelife);
}else{
$data_mem=$memcache->get($key);
$sm_news = unserialize($data_mem);
}
$smarty->assign("sm_news",$sm_news);
相關(guān)文章
PHP學(xué)習(xí)散記_編碼(json_encode 中文不顯示)
今天使用json_encode轉(zhuǎn)換數(shù)組的時候,出現(xiàn)了中文不顯示的情況。2011-11-11
PHP面向?qū)ο蠓治鲈O(shè)計的61條軍規(guī)小結(jié)
你不必嚴(yán)格遵守這些原則,違背它們也不會被處以宗教刑罰。但你應(yīng)當(dāng)把這些原則看成警鈴,若違背了其中的一條,那么警鈴就會響起 。2010-07-07
php $_SERVER["REQUEST_URI"]獲取值的通用解決方法
在 PHP 眾多預(yù)定義服務(wù)器變量中,$_SERVER["REQUEST_URI"] 算是經(jīng)常用到的,但是這個變量只有 apache 才支持,因此,我們需要一個更加通用的方式來獲取 REQUEST_URI 的值,本文就是結(jié)束這一問題的解決方案。2010-06-06
Discuz 5.0 中讀取純真IP數(shù)據(jù)庫函數(shù)分析
Discuz 5.0 中讀取純真IP數(shù)據(jù)庫函數(shù)分析...2007-03-03

