我正在研究如何在用户会话结束时运行脚本或函数,以便我可以删除可能需要的临时文件.
我已经搜索了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作业 – 如果是这样,我该如何检查会话是否已完成?
最佳答案
Should I be using a cron job – if so, how can I check that sessions are finished?
是.您可以根据文件的上次修改时间执行此操作(在您的情况下,文件是目录).如果它早于最大会话年龄,请删除该目录.
您可以使用find
Wikipedia命令.
您可以在PHP文件夹中找到示例脚本,另请参阅Deleting old session files from custom set session folder?和cleanup php session files.