<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 自動緩存 * * * * * 上面的Redis在TP5中叫做緩存驅動,本章講的自動緩存跟驅動無關,也就是不管使用什么緩存驅動都可以使用自動緩存。 此處以初始化鉤子信息行為中的代碼舉個栗子 **自動緩存使用前代碼** ~~~ $list = cache('hook_list'); if (empty($list)) : $list = $hook->column('id,name,addon_list'); empty($list) && cache('hook_list', $list, 3); endif; ~~~ **自動緩存使用后代碼** ~~~ $list = auto_cache('hook_list', create_closure($hook, 'column', ['id,name,addon_list'])); ~~~ 兩段代碼都是查詢出鉤子列表信息并緩存3秒。 下面來看看這兩個函數的實現代碼 ~~~ /** * 通過類創建邏輯閉包 */ function create_closure($object = null, $method_name = '', $parameter = []) { $func = function() use($object, $method_name, $parameter) { return call_user_func_array([$object, $method_name], $parameter); }; return $func; } ~~~ 從函數可以看出來 通過傳入對象,操作方法,參數 構建了一個閉包,但是閉包并沒有執行,意味著此處沒有進行數據庫查詢操作,然后將閉包返回。 ~~~ /** * 通過閉包控制緩存 */ function auto_cache($key = '', $func = null, $time = 3) { $result = cache($key); if (empty($result)) : $result = $func(); !empty($result) && cache($key, $result, $time); endif; return $result; } ~~~ auto_cache 函數的參數則是 緩存的key,閉包,緩存時間。 可以看到auto_cache函數中會先進行緩存存在的驗證,如果存在緩存則直接返回數據,若不存在則執行閉包進行數據庫查詢并緩存。 auto_cache('hook_list', create_closure($hook, 'column', ['id,name,addon_list'])); 那么結合在一起就是通過create_closure函數創建了一個帶數據庫查詢操作的閉包但是并沒有執行數據庫操作,而是在auto_cache函數中先驗證緩存是否存在,若不存在才執行閉包中的查詢操作并返回數據。
                  <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>

                              哎呀哎呀视频在线观看