<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                最近在優化博客呀, 想做一個統計網站 pv uv 的功能, 雖然有第三的統計平臺再用, 但還是想自己寫一個啊。 其實統計的數據非常簡單, 就是網站的訪問量丶訪客量。 ``` public function __construct() { Funcs::setUV(); DB::table('visiter') - > where('id', 1) - > increment('pv'); } ``` 我還特意設計了兩張簡單的表來記錄數據。 記錄訪客 ``` SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --Table structure for my_uvs -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- DROP TABLE IF EXISTS `my_uvs`; CREATE TABLE `my_uvs`( `id` int(11) NOT NULL AUTO_INCREMENT, `ip` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `last_time` int(10) NULL DEFAULT NULL, PRIMARY KEY(`id`) USING BTREE ) ENGINE = MyISAM AUTO_INCREMENT = 34 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1; 記錄 pv uv SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --Table structure for my_visiter -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- DROP TABLE IF EXISTS `my_visiter`; CREATE TABLE `my_visiter`( `id` int(10) NOT NULL DEFAULT 0, `pv` int(10) NULL DEFAULT NULL, `uv` int(10) NULL DEFAULT NULL, PRIMARY KEY(`id`) USING BTREE ) ENGINE = MyISAM CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Fixed; SET FOREIGN_KEY_CHECKS = 1; ``` 訪問量 初始化 visiter 表, 新增一個就行。 頁面每訪問一次, 就自增 1. DB::table('visiter') - > where('id', 1) - > increment('pv'); 訪客量 訪客量我是以 ip 記錄的, 每個 ip 在 24 小時內訪問只記錄一次, 所有才有了 last_time 字段, 用訪問時間做對比就行了。 ``` public static function setUV() { $ip = request() - > ip(); $uv = DB::table('uvs') - > where('ip', $ip) - > first('*'); $uv = self::toArray($uv); if ($uv === null) { DB::table('uvs') - > insert(['ip' => $ip, 'last_time' => time()]); DB::table('visiter') - > where('id', 1) - > increment('uv'); return true; } if ($uv['last_time'] + 86400 < time()) { DB::table('uvs') - > where('ip', $uv['ip']) - > update(['last_time' => time()]); DB::table('visiter') - > where('id', 1) - > increment('uv'); return true; } return 0; } ``` 總結 可能這種方法統計的很不全面, 但是在設計方面還算是比較合理的。 這種統計代碼放在中間件里實現更精簡更合理。 以 ip 來記錄訪客量, 到后面數據肯定會比較大, 這到時候用 artisan 計劃任務清理就行。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看