鍍金池/ 問(wèn)答/HTML5  Java  PHP  Python  HTML/ 用tp5寫(xiě)了個(gè)瀏覽量的功能,每次網(wǎng)頁(yè)刷新就+1,本地測(cè)試正常,但是放到線上每次刷

用tp5寫(xiě)了個(gè)瀏覽量的功能,每次網(wǎng)頁(yè)刷新就+1,本地測(cè)試正常,但是放到線上每次刷新+N

用tp5寫(xiě)了個(gè)瀏覽量的功能,每次網(wǎng)頁(yè)刷新就+1,線下本地測(cè)試正常,放到線上,使用服務(wù)器的瀏覽器測(cè)試也是+1, 線下訪問(wèn)線上的就變成每次刷新+4,用靜態(tài)變量測(cè)試結(jié)果執(zhí)行次數(shù)也就執(zhí)行了一次而已,排除代碼Bug 請(qǐng)問(wèn)是哪里除了問(wèn)題??

附上代碼:

/**
     * 讀取詳情
     * 瀏覽+1
     */
    public function detail($id='',$browse=true,$sql=false)
    {
        if (empty($id)) goto end;
        $data = $this->alias('a','left')
        ->field('a.id,a.tid,a.title,a.keyword,a.introduce,a.content,a.img,a.addtime,a.browse,u.name user_name,t.name type_name')
        ->join('tags t','t.id=a.tid','left')
        ->join('user u','u.id=a.uid','left')
        ->where(array('a.id'=>$id,'a.status'=>2)) 
        ->find();
        // dp($this->getLastSql());
        if (true == $sql) return $this->getLastSql();
        end:
        if (empty($data)) return null;
        //瀏覽+1
        if (true == $browse) $this->where('id',$data['id'])->setInc('browse');

        $data = $data->toArray();
        $data['user_name'] ? : $data['user_name'] = 'admin';
        return $this->cotm($data);
    }

只有這個(gè)操作里面寫(xiě)了 瀏覽+1的代碼

if (true == $browse) $this->where('id',$data['id'])->setInc('browse');

找到原因了 看了日志 發(fā)現(xiàn) 程序 被執(zhí)行了四次
但是為什么會(huì)被執(zhí)行四次呢??

回答
編輯回答
抱緊我

做好js防抖或節(jié)流

2017年11月7日 18:22
編輯回答
殘淚

可能你的服務(wù)器有點(diǎn)卡,刷新了一次請(qǐng)求了多次接口,你可以設(shè)置一個(gè)時(shí)間間隔。

2018年2月9日 02:51
編輯回答
神曲

有看過(guò)服務(wù)器日志么,是否確定測(cè)試時(shí)間段沒(méi)有其他訪問(wèn)請(qǐng)求?

2018年4月9日 22:05
編輯回答
巷尾

首先不說(shuō) bug ,我也不知道,懶得看代碼啊。就單獨(dú)說(shuō)瀏覽量不是刷新進(jìn)行增加的,你可以考慮寫(xiě)個(gè)接口進(jìn)行加一操作,js 進(jìn)行判斷,頁(yè)面加載完成后,請(qǐng)求該接口。

2017年4月25日 01:12