我正在研究如何在用户 session 结束时运行脚本或函数,以便删除可能需要的临时文件。
我搜索了 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_divisor
和 session.gc_probability
但无论如何我都无法编辑 php.ini。
这能实现吗。我是否应该使用 cron 作业 - 如果是,我如何检查 session 是否已完成?
最佳答案
Should I be using a cron job - if so, how can I check that sessions are finished?
是的。您根据文件的上次修改时间执行此操作(在您的情况下,文件是一个目录)。如果它早于最大 session 期限,请删除该目录。
您可以为此使用 find
Wikipedia 命令。
您可以在 PHP 文件夹中找到一个示例脚本,另请参阅 Deleting old session files from custom set session folder? 和 cleanup php session files。
关于php - session 结束时运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9571884/