先说一下之前的需求;
由于之前是一直用的直接读取数据库;每到周六周日服务器就会挂掉,英文访问量很大;对sql各种优化效果也不是很好;后来就采用了Memcache缓存,缓存之存储用户的手机号和Mac地址,
<?php include 'dbo.php'; $memcache = new Memcache; @$memcache->connect('localhost', 11211) or die ("Could not connect"); $mac = $_GET['mac']; $phone = $_GET['phone']; if(!$memcache->get("$mac")){ //由于是认证一次之后就是永久的老用户;所以不设置有效期了 $memcache->set($mac,$phone); //也可以写一下数据库 insertdata($mac,$phone); //如果是redis的话可以直接写到list里面然后定时任务去pop这个list }else{ $resArr = $memcache->get("$mac"); $dev_code = $resArr['dev_code']; $shopcode = $resArr['ccode']; $arr = array($shopcode, $dev_code); } //写数据库的方法 function insertdata($mac,$phone){ $dbo = new mysqldb(); $sql = "insert into phone_record(mac,phone) values($mac,$phone) on duplicate key update phone= $phone"; $re = $dbo->excute($sql); return $re; }