【问题标题】:Destroy files when session will destroy in php当会话将在php中销毁时销毁文件
【发布时间】:2011-10-09 23:10:27
【问题描述】:

会话销毁时是否可以从文件夹中删除文件。当用户进入该站点并且他可以上传文件(图像或文本文件)等时,我正在这样做,而无需登录该站点。并且文件将存储到我的项目文件夹中。现在我需要做的是,如果用户在没有登录的情况下退出浏览器,我需要删除他上传到项目文件夹的所有文件。如何做到这一点?

提前致谢。

【问题讨论】:

    标签: php file session destroy


    【解决方案1】:

    使用session set save handler 为会话事件创建事件处理程序。

    【讨论】:

      【解决方案2】:

      您可以通过实现自己的会话处理程序来做到这一点。这样,您可以为各种事件定义回调,包括会话的销毁。有关详细信息,请参阅此链接:

      http://www.php.net/manual/en/function.session-set-save-handler.php

      更新:该解决方案的问题在于您还需要实现其余的会话处理代码(初始化会话、关闭会话、从存储读取、写入、垃圾收集) .但是,上面的链接页面提供了一个完整的示例,您可以向其中添加功能。

      【讨论】:

        【解决方案3】:

        斯里拉姆, 在 PHP 中,似乎服务器不跟踪会话。只有当服务器在请求中收到有关会话 cookie 的信息时才知道会话已过期。如果 cookie 存在会话存在,否则,它已过期..

        【讨论】:

        • 刚刚找到其他类似的帖子。看一下这个。 stackoverflow.com/questions/2255919/php-session-expire-event
        • 你很好。这是我们需要在会话被破坏之前删除文件的问题。那么我们如何预测会话销毁呢?
        • @Sriram:我只是对此进行了一些搜索,似乎它在 php 中不像在 java 中那样简单。服务器不跟踪它的会话。只有当服务器在请求中收到有关会话 cookie 的信息时才知道会话已过期。如果 cookie 存在会话存在,否则,它已过期。
        • 人们为此使用了不同的解决方案。这篇文章中列出的很少。请检查。 stackoverflow.com/questions/1287064/….
        • 你在尝试 santhose,让你知道感谢你的努力。
        【解决方案4】:

        通过 unlink("path") 函数,您可以在 PHP 中执行此操作 .. 但这也取决于您使用的逻辑。

        如果您只想删除上传的文件,那么取消链接是您的解决方案

        【讨论】:

          【解决方案5】:

          这一切都取决于业务决策。

          您可以这样做,不要将文件保存在项目文件夹中,而是将其保存在其他位置,例如“tmp”文件夹,并在会话中保存该文件的引用(文件路径)。

          【讨论】:

          • 是的,我知道它很简单。但客户要求这样做。无法预测会话何时销毁。
          • 确切地说,您无法判断客户是否离开或浏览器崩溃或断电。无论发生什么,您都不要将文件保存在项目目录中。但是一旦客户登录,从保存的文件路径中获取文件,并将文件放到正确的位置。
          • 你是对的。但问题是我需要将所有路径保存到数据库中,用户上传的内容也是如此。我需要显示数据库中保存的记录。不仅是会话。
          • 告诉你,它非常依赖于你正在处理的 BL。为什么在用户登录之前将文件路径保存在 DB 中。在保存该文件之前,您可能需要 USER_ID。所以我建议将文件保存在登录操作中。在此之前,请为此类文件使用临时文件夹。用户登录后,立即从临时文件夹中获取文件并将其保存到数据库或项目文件夹中。
          • 很好,我们以前在未登录时将用户 ID 设置为 0。但我仍然无法理解存储在临时文件夹或项目文件夹内的差异是什么。我们可以从任何地方删除文件。?不是吗?您是说在用户关闭时清除或删除临时文件夹吗?如果我们每次都需要创建临时文件夹意味着它太关键了,因为我们不能说有多少用户会同时进入,同时我们不能为每个用户取消链接文件。它只能通过存储在 db 中的值来完成??
          猜你喜欢
          • 2012-05-25
          • 2011-11-06
          • 1970-01-01
          • 1970-01-01
          • 2011-02-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-25
          相关资源
          最近更新 更多