<bdo id="0ekax"></bdo>

    <td id="0ekax"><del id="0ekax"></del></td>

    <p id="0ekax"></p>
  1. <track id="0ekax"><strike id="0ekax"></strike></track>

    一站式百度SEO排名優化!-找老劉SEO 低投入,高轉化,精益求精、一絲不茍:旨在提供更好的SEO服務!

    首頁>>前端開發

    PbootCMS簡單兩步增加自動清理緩存功能(末尾附文件全代碼)

    首頁 2022-06-29 前端開發 870 ℃Tags:


    自PbootCmsV2.0.6開始,PbootCMS支持自定義標簽,且升級不被覆蓋。

    image.png

    媽媽再也不用擔心我的代碼升級被覆蓋啦。

    于是就想到用這個功能來實現實現自動清理runtime下的文件,防止緩存過多導致空間存儲不足。

    這個文件位置在 home下 ExtLabelController 控制器。

    原理也不多說,反正大家也不想了解,那就直接進入主題

    第一步:打開/apps/home/controller/ExtLabelController.php文件后,在下圖紅圈位置下方添加代碼,大概36行

    1656470216766597.png

    // 自動會話清理腳本
    public
    function clean_session() {
        check_dir(RUN_PATH.'/archive', true);
        $data = json_decode(trim(substr(file_get_contents(RUN_PATH.'/archive/session_ticket.php'), 15)));
        if ($data) {
            if ($data - >expire_time && $data - >expire_time < time()) {
                ignore_user_abort(true);
                set_time_limit(7200);
                ob_start();
                ob_end_flush();
                flush();
                $rs = path_delete(RUN_PATH.'/session');
                if ($rs) {
                    $data - >expire_time = time() + 60 * 60 * 24; // 下一次清理時間
                    create_file(RUN_PATH.'/archive/session_ticket.php', "<?php exit();?>".json_encode($data), true);
                }
            }
        } else {
            $data - >expire_time = time() - 60 * 60 * 24; // 初始化清理時間
            create_file(RUN_PATH.'/archive/session_ticket.php', "<?php exit();?>".json_encode($data), true);
        }
    }

    第二步:在前端公共模板底部添加下面代碼,至于為什么不直接在ExtLabelController控制器run函數中調用,別問那么多,就算你問我也不說

    <script src='/?p=/ExtLabel/clean_session/' async='async'></script>

    保存文件,完成!這樣每天第一個訪問你網站就會觸發自動清理腳本,如果上次清理時間是一天前(時間可自行設置),就會執行自動清理


    注意:這種方法有一個缺點就是如果你正在網站操作網站后臺, 訪問前端頁面觸發清理后會強制退出后臺,但幾乎影響不到,一天就觸發一次,大概率半夜就觸發了。


    問:網站沒人訪問觸發不了清理怎么辦?

    答:我建議你不要關心這個,都沒人訪問你的網站,你還有個錘子東西需要清理?

    問:聽人說前臺插入script觸發會不安全?

    答:都是成年人了其中的貓膩自行辨別,或者你需要交點智商稅,該觸發方式源于官方的蜘蛛記錄與文章瀏覽量。

    問:有沒有非前臺插入script的方法?

    答:有但不推薦,非script無非就是在公共控制類里面執行吧,但是官方更新會覆蓋。非要杠的話把函數里的代碼復制到公共控制類里面去就行。


    注:不知道你學廢了沒有,如果你還沒學廢,可以請博主吃個快餐有償代勞

    末尾附上完整帶日志清理與緩存清理的 ExtLabelController.php 文件代碼

    < ?php
    /**
     * @copyright (C)2020-2099 Hnaoyun Inc.
     * @author XingMeng
     * @email hnxsh@foxmail.com
     * @date 2020年3月8日
     *  個人擴展標簽可編寫到本類中,升級不會覆蓋
     */
    namespace apphomecontroller;
    use coreasicController;
    class ExtLabelController {
        protected $content;
        /* 必備啟動函數 */
        public
        function run($content) {
            // 接收數據
            $this - >content = $content;
    
            // 執行個人自定義標簽函數
            // $this->test();
            // 返回數據
            return $this - >content;
        }
        // 測試擴展單個標簽
        private
        function test() {
            $this - >content = str_replace('119.126.107.48', get_user_ip(), $this - >content);
        }
    
        // 自動會話清理腳本
        public
        function clean_session() {
            check_dir(RUN_PATH.'/archive', true);
            $data = json_decode(trim(substr(file_get_contents(RUN_PATH.'/archive/session_ticket.php'), 15)));
            if ($data) {
                if ($data - >expire_time && $data - >expire_time < time()) {
                    ignore_user_abort(true);
                    set_time_limit(7200);
                    ob_start();
                    ob_end_flush();
                    flush();
                    $rs = path_delete(RUN_PATH.'/session');
                    if ($rs) {
                        $data - >expire_time = time() + 60 * 60 * 24; // 下一次清理時間
                        create_file(RUN_PATH.'/archive/session_ticket.php', "<?php exit();?>".json_encode($data), true);
                    }
                }
            } else {
                $data - >expire_time = time() - 60 * 60 * 24; // 初始化清理時間
                create_file(RUN_PATH.'/archive/session_ticket.php', "<?php exit();?>".json_encode($data), true);
            }
        }
    
        // 自動日志清理腳本
        public
        function clean_log() {
            $interval = '3'; // 每隔多少天清理一次
            $retain = '7'; // 需要刪除多少天前的日志
            check_dir(RUN_PATH.'/archive', true);
            $data = json_decode(trim(substr(file_get_contents(RUN_PATH.'/archive/log_ticket.php'), 15)));
            if ($data) {
                if ($data - >expire_time && $data - >expire_time < time()) {
                    $startday = date('Y-m-d H:i:s', mktime(0, 0, 0, date('m'), date('d') - $retain, date('Y')));
                    $rs = coreasicDb: :table('ay_syslog') - >where("create_time<'$startday'") - >delete();
                    if ($rs) {
                        $data - >expire_time = time() + 60 * 60 * 24 * $interval; // 下一次清理時間
                        create_file(RUN_PATH.'/archive/log_ticket.php', "<?php exit();?>".json_encode($data), true);
                    }
                }
            } else {
                $data - >expire_time = time() - 60 * 60 * 24 * $interval; // 初始化清理時間
                create_file(RUN_PATH.'/archive/log_ticket.php', "<?php exit();?>".json_encode($data), true);
            }
        }
    
    }

    出處:https://www.htmlbk.com/pbootcms/634.html

    搜索
    分類
    熱門標簽
  2. 首頁
  3. 電話
  4. QQ
  5. ?
    聯系老劉手機
    1043025812
    聯系老劉微信
    掃描微信二維碼
    性欧美video_zzijzzij亚洲日本少妇_一级毛片和美国久久久久_久久AV喷潮久久AV高