tpshop中获取省市区三级联动接口也不难,只是请求时间一看,我的天6.9秒。这谁能受得了,于是把获取到的数据放到缓存文件里面了,处理之后也就是0.2秒。
/* *获取省市区三级联动 */ public function threeLevel(){ $first_dir = dirname(dirname(dirname(dirname(__FILE__)))); $file_name = $first_dir."/runtime/threelevel/threelevel.txt"; //如果省市区三级联动缓存存在,则直接读取缓存 if (file_exists($file_name)) { $cache_data = file_get_contents($file_name); if (!empty($cache_data)){ $cache_data = json_decode($cache_data, true); if ($cache_data) { //判断是否过期 $time = time(); if($cache_data['time'] + $cache_data['expire'] > $time){ return json_encode(array('status'=>1,"msg"=>"获取成功!",'result'=>$cache_data['data'])); } } } } //获取省 $p = M('region')->where(array('parent_id' => 0, 'level' => 1))->select(); $three_level = $two_level = array(); $i = 0; //获取市 foreach ($p as $k => $v) { $three_level[$i] = $v; $two_level = M('region')->where(array('parent_id' => $v['id'], 'level' => 2))->select(); $j = 0; $three_level[$i]['subcat'] = $two_level; //获取区 foreach ($three_level[$i]['subcat'] as $kk => $vv) { $three_level[$i]['subcat'][$kk]['subcat'] = M('region')->where(array('parent_id' => $vv['id'], 'level' => 3))->select(); } $j++; $i++; } if(!empty($three_level)){ $cache_data = array('data' => $three_level, 'time' => time(), 'expire' => 804600); $cache_data = json_encode($cache_data); if (!file_exists($file_name)) { mkdir($first_dir."/runtime/threelevel", 0777, true); } $put_result = file_put_contents($file_name, $cache_data); return json_encode(array('status'=>1,"msg"=>"获取成功!",'result'=>$three_level)); } return json_encode(array('status'=>0,"msg"=>"获取失败!",'result'=>'')); }