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

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

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

附上代碼:

/**
     * 讀取詳情
     * 瀏覽+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);
    }

只有這個操作里面寫了 瀏覽+1的代碼

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

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

回答
編輯回答
抱緊我

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

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

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

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

有看過服務(wù)器日志么,是否確定測試時間段沒有其他訪問請求?

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

首先不說 bug ,我也不知道,懶得看代碼啊。就單獨說瀏覽量不是刷新進行增加的,你可以考慮寫個接口進行加一操作,js 進行判斷,頁面加載完成后,請求該接口。

2017年4月25日 01:12