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/