php的$_FILES的临时储存文件与回收机制

探讨PHP上传文件过程中临时文件的创建与回收机制。分析了上传文件的生命周期及如何处理因异常导致的临时文件残留问题,并提出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

php 关于上传后的临时文件如何删除的问题

2013-08-30 13:12匿名    分类:PHP  |  浏览 437 次
  PHP 编程语言
当web页面通过http将一个文件上传到server时,会在/tmp中产生临时文件,然后程序中会用move_uploaded_file ( $_FILES ["Filedata"] ["tmp_name"], $filename );将文件拷到所需要存放该文件的目录下。那么问题出现了,当move_uploaded_file()操作失败或被打断,总之就是文件没有移走。剩下的临时文件如何删除呢?若系统或php会自动删除/tmp下的文件,那么在哪里可以配置删除的时间间隔,删除的条件,还有/tmp允许存放文件总空间的最大值呢?求解,求解啊!另追问:有人知道在php.ini或者其它的哪个配置文件中可以配置/tmp 临时目录的参数么???
我有更好的答案
分享到:
2013-08-30 20:25热心网友 最快回答
服务器中采用最小化安装没有计划任务,还好server程序中有计时的模块,在里面调用了一下脚本。脚本是perl写的,写的不好就不贴出来了虽然不理想,但也算是解决了问题。回复 2# bs
评论  |  0  1
2013-08-30 20:28热心网友
嗯,tmp目录是公用临时文件目录,可以使用计划任务清理一段时间内未使用的文件

php的$_FILES的临时储存文件与回收机制实测过程

作者: 字体:[ 增加  减小] 类型:转载
上传文件是怎么个原理,大概的想了下,应该是一种回收机制:点击了临时文件空间,那么,php自身应该自己维护这块空间的回收,具体的测试过程如下,感兴趣的朋友可以参考下哈
我想有跟我一样的想法的人会这样处理的: 上传的文件只是想临时使用,不需要把原文件保存备用,如resize之类的操作,且这些后期的操作会出现在第二轮从客户端请求时才操作的,如先上传,把上传的临时文件路径返回到浏览器,用户点击后再对这个临时文件进行操作;可是在实际的实现中发现,这个临时文件在二轮请求时,竟然不存在了,跑到临时文件夹中查看也没有找到. 

我在某q群中也遇到有人问过这个问题,导致的原因也是跟我的这个实现想法差不多.所以,就有个疑惑,上传文件是怎么个原理? 
不想去看php的实现代码,我大概的想了下,应该是一种回收机制:点击了临时文件空间,那么,php自身应该自己维护这块空间的回收; 

于是自己尝试上传了一下极大的文件,大到足够让php运行很长时间,我以为我会看到它出现在临时文件夹中.可惜的是,我竟然没有看到它的身影,直到php返回:因为此文件超过上传限制;然后我使用小文件上传打印出它的临时文件夹路径,发现它是以php开头,以tmp结束的文件命名方式; 

我想了个方式,使用while卡住上传php的本次进程一定的时间再返回,这回我看到了临时文件夹中的临时文件,确实是以php**.tmp这样的命名,如图 
php的_FILES的临时储存文件与回收机制 - ☆奋力拼搏☆ - 北方的…郎 
如果在php运行的过程中使用刷新页面的非正常结束php的方式来中止php解析话,那么这个临时文件就会永久的保留, 
如果php是正常的结束话,这个文件会在php的结束时删除. 

同时我感觉到这个文件应该是在上传完成后再出现的:从我上传大文件看不到它的身影推断; 
所以,php的临时文件维护方式是php一结束就回收资源,想在第二轮请求使用这个文件话,应该自己移动后进行维护此文件, 
在本次测试中,并没有测试php include多个嵌套情况时,在什么时机下进行回收的.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北方的刀郎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值