PHP/Symfony/Ajax/Apache -处理浏览器中未完成注册或缓存的临时文件


PHP/Symfony/Ajax/Apache - Handling temporary files of unfinished registrations or caching in browser

情况:

我有一个页面,用户可以在其中输入详细信息并申请工作(多个页面,而不仅仅是一个表单)。在注册过程中,用户可以上传文件,这些文件将存储在服务器上的临时文件夹中,稍后将附加到应用程序中。在申请过程中,用户可以上传其他文件,删除已上传的文件等。

一旦注册成功完成,最终文件被移动到用户特定的文件夹中,我将该文件夹的路径存储在数据库中,因此它附加到应用程序-一切都很好。

问题:

如果注册没有成功完成(基本上已经取消了),但是文件上传了,我如何以一种智能的方式删除这些文件?

当应用程序成功完成时,活动会话将被关闭。如果应用程序尚未完成,会话将超时,并且没有用户再访问这些文件。

思想:

现在我能想到几个主意,但我不确定哪一个是最聪明的。上传将通过AJAX处理。我希望文件被上传或至少存储时,他们被添加到应用程序,所以他们将被附加,即使用户在过程中移动他们的硬盘驱动器:

1)会话超时后清理(自定义会话处理程序)

2)将文件存储在浏览器中,仅在应用程序完成时上传

3)使用cron作业删除超过X天的文件

4)序列化文件到会话,会话将自动清除,不需要任何修改。

理想情况下,我希望临时文件在进程完成或取消后消失。

将上传时间的文件存储在数据库的临时表中。完成后,将文件移动到另一个(目标)表。在cron/database作业中删除临时表中超过1天的记录。

你可以用文件达到同样的结果。创建临时目录,每天创建子目录并在其中存储文件。如:

temp/20150911/some_unique_filename.pdf

在会话中存储文件的完整路径。完成后将文件移动到目标目录。