php :: tmp文件需要多长时间?

我正在上传脚本。

如果一个用户上传一个文件,并且它已经存在,我想警告用户(这全部通过ajax),并给他们selectreplace它,或取消。

我很好奇,如果我可以在tmp中保留文件,并在ajax响应中传递回该文件的path,而不是移动文件。

如果他们说覆盖旧的文件,在Ajax请求传递path回到PHP继续在文件上工作。

为了这个工作,但是我需要知道一个文件在php的tmp中保留多久

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

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

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

如果文件没有被移走或重命名,该文件将在请求结束时从临时目录中删除。

因此要保存的文件应该被移到另一个位置。

更一般地说,就像问题标题可能暗示的那样,临时文件夹留给系统清理。 当使用像tempnam或tmpfile这样的函数,或者简单地写入临时目录(请参阅sys_get_temp_dir )时,这是正确的。

在Ubuntu中,这是在每次系统重启时或者在/etc/default/rcS定义的时间间隔/etc/default/rcS

在一些基于Red Hat的发行版中,它是使用cronjob中的tmpwatch实用程序完成的。 在其他情况下,使用tmpfs文件系统挂载/tmp分区,该文件系统与RAM磁盘相似(因此在计算机closures时进行清理)。

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

有三个variables需要在PHP中设置,以确保/ tmp目录的垃圾收集正确发生,它们是:

 session.gc_maxlifetime = 21600 session.gc_probability = 1 session.gc_divisor = 100 

将session.gc_maxlifetime设置为每个tmp文件在删除之前要保持的秒数。 如果您在OpenCart中login到pipe理员,这是秒数,直到您将自动注销。 例如设置半小时,你会做60秒30分钟,这将是一个1800秒的值。

另外两个variables与垃圾收集器运行的时间有关,如果您遇到问题,重要的是将它们设置为上面的值。

更多信息在这里: https : //www.antropy.co.uk/blog/opencart-php-session-tmp-files-filling-up/