php - session 结束时运行脚本

标签 php session garbage-collection cron

我正在研究如何在用户 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_divisorsession.gc_probability但无论如何我都无法编辑 php.ini。

这能实现吗。我是否应该使用 cron 作业 - 如果是,我如何检查 session 是否已完成?

最佳答案

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

是的。您根据文件的上次修改时间执行此操作(在您的情况下,文件是一个目录)。如果它早于最大 session 期限,请删除该目录。

您可以为此使用 findWikipedia 命令。

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

关于php - session 结束时运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9571884/

相关文章:

php - 通过扩展 ArrayObject 让对象循环为带有 foreach() 的数组

php - 使用 axios 的 API 请求总是未经 Laravel API 授权

java - Struts 2 + Spring 在 session 中放置一个托管的 spring bean

php - 为什么添加 CodeIgniter 构造函数会产生错误 500

php - 无法通过循环从PHP二维多维数组中获取特定记录

java - 对象何时符合垃圾收集条件?

Java 8 元空间 : OutOfMemoryError: Dealing with reflection Inflation

java - 如何测量 Java GC Stop The World 时间?

php - $_SESSION 已创建但 $_SERVER ['HTTP_COOKIE' 中没有 PHPSESSID]

php - 加密 session ID