tpshop获取省市区三级联动接口

        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'=>''));
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值