pbootcms模板自动清理runtime缓存

1. 修改 ExtLabelController.php 文件

在指定位置添加 clean_session 方法。

修改后的代码片段:

// 测试扩展单个标签 private function test() { $this->content = str_replace('{pboot:userip}', 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->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. 在模板通用文件中调用 clean_session

将调用逻辑添加到通用模板文件(如 foot.html 或 head.html)。

添加的代码:

<?php // 调用自动会话清理脚本 $app = new \apps\home\controller\ExtLabelController(); $app->clean_session(); ?>

操作步骤:

  1. 打开模板文件 foot.html 或 head.html
  2. 将上述代码插入到文件的合适位置(通常放在文件末尾,确保不影响页面渲染)。

注意事项

  1. 权限问题:确保 PHP 进程有权限读写 RUN_PATH . '/archive/session_ticket.php' 和 RUN_PATH . '/session' 目录。
  2. 性能影响clean_session 方法涉及文件操作和目录删除,建议仅在必要时调用,避免频繁执行影响性能。
  3. 初始化文件:如果 session_ticket.php 文件不存在,请手动创建并初始化内容为:
    <?php exit();?>{"expire_time":0}

完成以上步骤后,系统将具备自动清理会话的功能,并通过模板文件触发清理逻辑。

posted @ 2025-12-05 14:06  Henry王  阅读(0)  评论(0)    收藏  举报