我正在研究上传脚本。

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

我很好奇是否可以将文件放在TMP中,然后在AJAX响应中传递该文件的路径,而不是移动文件。

如果他们说,如果Ajax请求将路径传递回PHP,则覆盖旧文件,该路径将继续在文件上工作。

为此,我需要知道文件在PHP的TMP DIR中停留多长时间

有帮助吗?

解决方案

通过PHP脚本完成执行后,通过帖子上传的文件将立即删除。

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

其他提示

对于上传的文件, 手动状态:

如果尚未移开或重命名,将在请求末尾从临时目录中删除该文件。

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

更普遍的是,正如您的问题标题可能暗示的那样,系统要清理临时文件夹。当使用诸如此类的函数时,这是正确的 Tempnam 或者 tmpfile, ,或仅在写入临时目录时(请参阅 sys_get_temp_dir).

在Ubuntu中,这是在每个系统重新启动或在一个时间间隔内完成的,如在 /etc/default/rcS.

在一些基于红帽的发行版中,它是使用 tmpwatch 来自Cronjob的实用程序。在其他人中, /tmp 使用 tmpfs 文件系统,类似于RAM磁盘(因此,计算机关闭时要清洁)。

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

PHP中需要设置三个变量,以确保 /TMP目录的垃圾收集正确发生,并且它们是:

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

将Session.gc_maxlifetime设置为您希望每个TMP文件在删除之前持续的秒数。如果您登录OpenCart中的管理员,则是秒数,直到您自动登录为止。例如,要设置半小时,您将进行60秒的时间30分钟,这将是1800秒的值。

其他两个变量与垃圾收集器何时运行有关,如果您对此有问题,则必须将它们设置为上述值。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top