memcache使用实例|PHP

首先,判断memcache中是否存在key,如果有则从memcache中取值;如果没有相应的key,则从去网页中抓取数据,如果抓取成功,则存入db,写入memcache并读取,如果抓取不成功,则直接MySQL中取值,并将取出来的值放入memcache。

[php]  view plain  copy
  1. <?php  
  2. include('inc/common.inc.php');  
  3.   
  4. if (! isset($city) || ! is_array($city) ) {  
  5.     exit;  
  6. }  
  7.   
  8. //print_r ($city);exit;  
  9.   
  10. $mem = new Memcache();  
  11. $mem-> connect('localhost''11211');  
  12. $expires=15*60;  
  13.   
  14. //check if cache exits  
  15. if(($value = $mem-> get($city)) != FALSE) {  
  16.     echo "get key from memcache: "."<br />";  
  17.     //  $return=$mem->get($city);  
  18.     //  echo json_encode($return);  
  19. }//if  
  20. else {  
  21.     $resultJson=fetch_data();  
  22.     echo count($resultJson)."<br />";  
  23.     if(count($resultJson)==1 || empty($resultJson)){  
  24.         //从mysql中取值  
  25.         echo "get key from mysql:"."<br />";  
  26.         $query="select * from pm25";  
  27.         $result=mysql_query ($query) ;  
  28.         while ($row = mysql_fetch_assoc($result)){  
  29.             $rows[]=$row;  
  30.         }  
  31.         //将获取的值数组存入memcache  
  32.         for($i=0;$i<count($rows);$i++){  
  33.             $k[$i]=$rows[$i]['city'];  
  34.             $v[$i]['city']=$rows[$i]['city'];  
  35.             $v[$i]['pm25']=$rows[$i]['pm25'];  
  36.             $mem -> set($k[$i], $v[$i], false, $expires);  
  37.         }  
  38.         //      $return=$mem->get($city);  
  39.         //      echo json_encode($return);  
  40.     }//if  
  41.     else{  
  42.         echo "get key from new_writed mysql:"."<br />";  
  43.         write_db($resultJson);  
  44.         $query="select * from pm25";  
  45.         $result=mysql_query ($query) ;  
  46.         while ($row = mysql_fetch_assoc($result)){  
  47.             $rows[]=$row;  
  48.         }  
  49.         //write memcache  
  50.         for($i=0;$i<count($rows);$i++){  
  51.             $k[$i]=$rows[$i]['city'];  
  52.             $v[$i]['city']=$rows[$i]['city'];  
  53.             $v[$i]['pm25']=$rows[$i]['pm25'];  
  54.             $mem -> set($k[$i], $v[$i], false, $expires);  
  55.         }  
  56.         //      $return=$mem->get($city);  
  57.         //      echo json_encode($return);  
  58.     }//else  
  59.   
  60. }//else  
  61.   
  62. foreach ($city as $k=>$v){  
  63.     $return[$k]=$mem->get($v);  
  64. }  
  65. echo json_encode($return);  
  66.   
  67. function fetch_data() {  
  68.     $url="http://www.example.com";  
  69.     //$url="";    
  70.     $data = http_get($url);  
  71.     $getJson = json_decode($data, true);  
  72.     return $getJson;  
  73. //func fetch_data  
  74.   
  75. function write_db($getJson){  
  76.     $sql="DELETE FROM pm25";  
  77.     mysql_query($sql);  
  78.     //sort the json.txt  
  79.     foreach ($getJson as $key => $row) {  
  80.         $area[$key] = $row['area'];  
  81.         $pm2_5[$key]= $row['pm2_5'];  
  82.     }  
  83.     array_multisort($area, SORT_ASC,$pm2_5,SORT_ASC,$getJson);  
  84.     for($i=0;$i<count($getJson)-1;$i++){  
  85.         if($getJson[$i]['pm2_5']==0)  
  86.             $count=0;  
  87.         else  
  88.             $count=1;  
  89.         $sum=$getJson[$i]['pm2_5'];  
  90.         for($j=$i+1;$j<count($getJson);$j++,$i++){  
  91.             if(strcmp($getJson[$j]['area'],$getJson[$i]['area'])==0 ){  
  92.                 if($getJson[$j]['pm2_5']==0 ){  
  93.                     continue;  
  94.                 }  
  95.                 else{  
  96.                     $count++;  
  97.                     $sum+=$getJson[$j]['pm2_5'];  
  98.                     $pm2_5=$sum/$count;  
  99.                 }  
  100.             }  
  101.             else{  
  102.                 //insert into mysql  
  103.                 $result['city']=$getJson[$i]['area'];  
  104.                 $result['pm25']=intval($pm2_5);  
  105.                 $query="insert into pm25(city,pm25) values ('".$result['city']."',".$result['pm25'].")";  
  106.                 mysql_query($query);  
  107.                 break;  
  108.             }  
  109.         }  
  110.     }  
  111.     return $getJson;  
  112. }//func write_db  
  113.   
  114.   
  115. $mem -> close();  
  116. ?>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值