2012-03-05 104 views
4

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

我已经搜索过所以找到解决这个问题,并遇到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作业吗?如果是的话,我该如何检查会话是否完成?

+0

'session_set_save_handler'用于替换您的自定义解决方案的PHP正常会话处理。这不是为了链接功能。 – webbiedave 2012-03-05 18:45:24

回答

2

我应该使用cron作业吗?如果是的话,我该如何检查会话是否完成?

是的。你基于文件的最后修改时间来做到这一点(在你的情况下,文件是一个目录)。如果它比最大会话时间早,则删除该目录。

您可以使用findWikipedia命令。

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

+0

我如何知道最大会话年龄? – 2012-03-05 18:32:02

+0

在您的网站上持续多长时间?这只是一个问题,你如何配置它,所以你必须说;)你可能想要在6小时后删除目录。 – hakre 2012-03-05 18:34:10

+0

好的,谢谢! – 2012-03-05 18:36:28