<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國際加速解決方案。 廣告
                ## 接口異步更新ip信息 一般拿到客戶端ip之后,我們希望解析出來ip的具體位置信息,這個可以用ip地址庫來做,但缺點是不能及時更新,不夠實時,所以最好使用在線接口去做,比如新浪或淘寶的ip查詢接口。那怎么利用接口查詢ip信息,并保存到數據庫呢,因為只需要查詢一次就可以。 是插入數據時查詢接口嗎?插入數據時查詢,由于不能保證接口的穩定性,這會增加插入操作的響應時間,這并不可行。 還有一種方法,那就是用一個接口,前端ajax異步請求后端,后端curl請求第三方接口更新ip信息,更新后保存,這樣只需要更新一次就可以。 做一個接口更新ip詳細信息,只更新一次,**但要注意用行鎖鎖住防止并發更新問題**,因為ip是動態分配經常變動的,要實時近期數據才準確。不這樣做的話還有其它方案,隊列或者計劃任務批處理,但都不是最優方案,這種接口讓前端ajax調用才是最優方案。 前端偽代碼: ```javascript if (data.ip_info == '') { getIpInfo(data.id) } ``` 后端偽代碼: ```php function getIpInfo($id) { // 開啟事務用行鎖 Db::startTrans(); try { if ($info = Db->lock(true)->find($id)) { if ($info['ip_info']) { throw new \Exception('ip數據已更新!'); } $ipInfo = curl($info['ip']); // 更新ip信息 Db::update(['ip_info' => $ipInfo]); } else { throw new \Exception('數據不存在!'); } Db::commit(); } catch (\Exception $e) { Db::rollback(); $errMsg = $e->getMessage() ?: '系統忙!'; } } ``` * * * * * last update:2018-7-1 10:36:46
                  <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>

                              哎呀哎呀视频在线观看