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();
?>操作步骤:
- 打开模板文件
foot.html或head.html。 - 将上述代码插入到文件的合适位置(通常放在文件末尾,确保不影响页面渲染)。
注意事项
- 权限问题:确保 PHP 进程有权限读写
RUN_PATH . '/archive/session_ticket.php'和RUN_PATH . '/session'目录。 - 性能影响:
clean_session方法涉及文件操作和目录删除,建议仅在必要时调用,避免频繁执行影响性能。 - 初始化文件:如果
session_ticket.php文件不存在,请手动创建并初始化内容为:<?php exit();?>{"expire_time":0}
完成以上步骤后,系统将具备自动清理会话的功能,并通过模板文件触发清理逻辑。

扫码添加技术【解决问题】
专注网站运营、网站安全十余年。
专业解决各种疑难杂症,您有任何网站问题都可联系我们技术人员。
本文来自博客园,作者:Henry王,转载请注明原文链接:https://www.cnblogs.com/heneryw/p/19307346

浙公网安备 33010602011771号