2011-06-11 235 views
1

后删除它是否有可能通过move_uploaded_file上传的文件存储到一个目录并将其标记在几分钟后删除?我试图在一段时间后让临时文件停留在服务器上,然后它会被删除(只有在没有处理它的时候),这样当文件上传并移动到目录时(如果尚未处理的话)不要担心这部分,这将由我来完成)它应该从服务器上删除文件。如何创建一个临时的上传和一段时间

没有办法将服务器上的临时文件(不使用move_uploaded_file)保存在服务器的tmp目录中,如何在上传到临时目录(或移动到目录),如果没有处理,将其标记为稍后删除。

我试图研究如何这是可能的,但我还没有发现任何类型的有关如何创建一个临时文件停留时间的限制后的问题/主题。

编辑:为了澄清,我不希望在脚本在上传后完成执行后删除文件。

回答

4

遵循以下步骤:

首先使用通常的move_upload_file功能,并保持文件服务器上。

现在创建一个新的PHP程序要做到这一点:

  1. 使用FILETIME函数来确定文件的最后编辑时间。因此您可以检查它是否最近处理过。
  2. 比较上面的删除操作标准的日期/时间。
  3. 使用PHP取消链接功能,摆脱旧的文件。

现在运行上面的程序作为cron每天一次。

2

没有自动的方式。某些服务器会在一段时间后定期清除/ tmp目录中的文件,但唯一可以确定的方法是编写自己的清理脚本并作为cron作业运行。 (或者使用穷人的cron并让你的脚本触发清理检查,这是一种不可靠但有时可行的方法。)

您可以标记文件在数据库或文本文件中的到期时间,或者只是使用文件系统时间戳来检查过期的文件。

更复杂的解决方案是将文件移动到某种类似Redis的缓存中,您可以在其中设置到期时间(TTL),但这取决于您要存储什么类型的数据,并且是一个有点深奥的解决方案。

1

我有另一种方法,我使用。我将文件移动到临时位置。处理完成后,它将不会在固定时间内被移除。下次运行该脚本时,它将删除所有以前上传和处理的文件。这避免了cron作业的需求。消除一点头痛。

相关问题