php:: tmp 文件会保留多长时间?

2022-08-30 09:31:40

我正在处理上传脚本。

如果用户上传了一个文件并且它已经存在,我想警告用户(这都是通过ajax),并给他们替换它或取消的选项。

我没有移动文件,而是好奇是否可以将文件保留在tmp中,并在ajax响应中传回该文件的路径。

如果他们的用户说覆盖了该ajax请求中的旧文件,则将路径传递回php,后者将继续处理该文件。

但是,为了使其工作,我需要知道文件在php的tmp dir中保留多长时间


答案 1

通过 POST 上传的文件会在 php 脚本完成执行后立即删除。

根据 php.net:“如果文件尚未被移走或重命名,则该文件将在请求结束时从临时目录中删除。


答案 2

对于上传的文件,手册指出

如果文件尚未移走或重命名,则会在请求结束时从临时目录中删除该文件。

因此,应将要保留的文件移动到另一个位置。

更一般地说,正如您的问题标题可能暗示的那样,临时文件夹将由系统清理。当使用 tempnamtmpfile 等函数时,或者只是在写入临时目录时,情况确实如此(请参见sys_get_temp_dir)。

在 Ubuntu 中,此操作在每次系统重新启动时完成,或按时间间隔完成,如 中所定义。/etc/default/rcS

在一些基于红帽的发行版中,它是使用cronjob中的实用程序完成的。在其他情况下,分区是使用文件系统挂载的,文件系统类似于RAM磁盘(因此在计算机关闭时被清理)。tmpwatch/tmptmpfs

另一个已知的机制是大小阈值,这意味着当临时目录达到一定大小时,将从旧文件中清除它。


推荐