【问题标题】:Execute function on session destruction在会话销毁时执行函数
【发布时间】:2010-07-14 17:26:56
【问题描述】:

我正在开发一个基于 Web 的用户界面,它可以绘制数据库中的一些数据并将其显示给用户。从字面上看,可能会生成数百万种不同的图形,所以我的想法是动态生成图形,将其保存到临时文件中,提供网页并在一段时间后最终删除图像。

因此,我想做的是将已经生成的图像的路径存储在 $_SESSION 中,以便在会话被销毁时可以删除文件。 PHP 中有没有办法执行给定函数(在这种情况下,它将负责删除上述文件)当会话被销毁时,无论何时发生?

【问题讨论】:

    标签: php session


    【解决方案1】:

    是的,请参阅session_set_save_handler,尤其是$destroy 和$gc 参数。

    【讨论】:

    • @Pekka "session.gc_divisor 加上 session.gc_probability 定义了每次会话初始化时 gc(垃圾收集)进程启动的概率。该概率使用 gc_probability/gc_divisor 计算,例如 1/ 100 表示每次请求启动 GC 进程的几率为 1%。session.gc_divisor 默认为 100。见here。
    • @Artefacto 好信息,干杯!垃圾收集功能将在什么上下文中运行?看到原来的脚本可能早就死了?
    • @Artefacto:我看到函数的签名是 bool session_set_save_handler(回调 $open,回调 $close,回调 $read,回调 $write,回调 $destroy,回调 $gc)。我想没有办法只设置销毁处理程序和垃圾收集器,不是吗?
    • @Pekka 好吧,我刚刚检查了源代码,每次调用 session_start 时它都会生成一个随机数,并根据它运行垃圾收集器。所以将来它会在一些脚本的上下文中运行。
    • @plok 不,你必须一路走下去;提供 6 个有效的回调。请参阅手册上的示例。
    猜你喜欢
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 2011-10-09
    • 2016-11-19
    • 1970-01-01
    • 2012-08-30
    相关资源
    最近更新 更多