php – 会话结束时运行脚本

我正在研究如何在用户会话结束时运行脚本或函数,以便我可以删除可能需要的临时文件.

我已经搜索了SO来找到这个问题的解决方案并且遇到了this但是我发现我有点超出我的深度并且我发现关于GC的PHP文档令人困惑(并且从我从文档中理解的 – 它是不是我真正需要的东西).

我在session_set_save_handler看了一下页面,想出了这个:

session_set_save_handler( '', '', '', '', 'deleteDocs');
function deleteDocs()
{
    rmdir('user/' . rawurlencode($_SESSION['data']['user']['details']['email']) . '/temp');
}

但是,此功能根本不运行.坦率地说,有了这个,我觉得我不知道自己到底在做什么.

我尝试使用GC并查看了session.gc_divisorsession.gc_probability,但无论如何我无法编辑php.ini.

这可以实现吗?我应该使用cron作业 – 如果是这样,我该如何检查会话是否已完成?

最佳答案

Should I be using a cron job – if so, how can I check that sessions are finished?

是.您可以根据文件的上次修改时间执行此操作(在您的情况下,文件是目录).如果它早于最大会话年龄,请删除该目录.

您可以使用findWikipedia命令.

您可以在PHP文件夹中找到示例脚本,另请参阅Deleting old session files from custom set session folder?cleanup php session files.

点赞