1. 修改控制器檔案
-
開啟控制器檔案: 開啟
/apps/home/controller/ExtLabelController.php
檔案。 -
找到現有函式: 找到以下程式碼段:
// 測試擴充套件單個標籤 private function test() { $this->content = str_replace('{pboot:userip}', get_user_ip(), $this->content); }
-
新增清理函式: 在
test()
函式下面新增如下程式碼:// 自動會話清理指令碼 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->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); } }
2. 在模板檔案中呼叫清理函式
-
選擇模板檔案: 選擇一個常用的模板檔案,如
foot.html
(通用底部)或head.html
(通用頭部)。 -
新增呼叫程式碼: 在模板檔案中新增如下程式碼:
<?php if (!isset($_GET['no_clean'])) { include_once APP_PATH . '/home/controller/ExtLabelController.php'; $controller = new \app\home\controller\ExtLabelController(); $controller->clean_session(); } ?>
3. 建立初始清理檔案
- 建立初始清理檔案: 在
runtime/archive
目錄下建立一個初始清理檔案session_ticket.php
,內容如下:<?php exit();?> {"expire_time":<?php echo time() - 60 * 60 * 24; ?>} // 初始化清理時間
4. 驗證清理功能
-
訪問網站: 訪問網站,確保每次訪問時都會觸發清理指令碼。
-
檢查日誌: 檢查日誌檔案或監控系統,確保清理指令碼按預期工作。
透過以上步驟,你可以實現 PbootCMS 的自動清理 runtime
快取功能,確保系統穩定執行並釋放空間。