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


Posted in PHP onJuly 12, 2013

我想有跟我一样的想法的人会这样处理的: 上传的文件只是想临时使用,不需要把原文件保存备用,如resize之类的操作,且这些后期的操作会出现在第二轮从客户端请求时才操作的,如先上传,把上传的临时文件路径返回到浏览器,用户点击后再对这个临时文件进行操作;可是在实际的实现中发现,这个临时文件在二轮请求时,竟然不存在了,跑到临时文件夹中查看也没有找到.

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

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

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

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

PHP 相关文章推荐
PHP递归算法的详细示例分析
Feb 19 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
Aug 08 PHP
ThinkPHP验证码使用简明教程
Mar 05 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
Apr 05 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
Dec 20 PHP
Yii使用技巧大汇总
Dec 29 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
Jan 28 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
Mar 08 PHP
PHP中的print_r 与 var_dump 输出数组
Jun 13 PHP
PHP数据对象PDO操作技巧小结
Sep 27 PHP
PHP PDOStatement::closeCursor讲解
Jan 30 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
May 27 PHP
php图像处理函数大全(推荐收藏)
Jul 11 #PHP
PHP 获取远程文件大小的3种解决方法
Jul 11 #PHP
深入Nginx + PHP 缓存详解
Jul 11 #PHP
基于PHP中的常用函数回顾
Jul 11 #PHP
PHP 获取文件权限函数介绍
Jul 11 #PHP
浅析php学习的路线图
Jul 10 #PHP
php对图像的各种处理函数代码小结
Jul 08 #PHP
You might like
通过5个php实例细致说明传值与传引用的区别
2012/08/08 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
php中实现字符串翻转的方法
2017/02/22 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
javascript 闭包疑问
2010/12/30 Javascript
浅析JavaScript中的delete运算符
2013/11/30 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
2014/10/16 Javascript
jQuery实现行文字链接提示效果的方法
2015/03/10 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
JavaScript中用toString()方法返回时间为字符串
2015/06/12 Javascript
Javascript中判断一个值是否为undefined的方法详解
2016/09/28 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
基于JavaScript实现弹幕特效
2020/08/27 Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
2017/09/11 Javascript
H5实现仿flash效果的实现代码
2017/09/29 Javascript
JS逻辑运算符短路操作实例分析
2018/07/09 Javascript
基于js Canvas实现二次贝塞尔曲线
2018/12/25 Javascript
如何为你的JS项目添加智能提示与类型检查详解
2019/03/12 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
2020/02/24 Javascript
部署vue+Springboot前后端分离项目的步骤实现
2020/05/31 Javascript
[01:14]TI珍贵瞬间系列(六):冠军
2020/08/30 DOTA
Python 元组(Tuple)操作详解
2014/03/11 Python
Python变量访问权限控制详解
2019/06/29 Python
python 爬取古诗文存入mysql数据库的方法
2020/01/08 Python
Python requests上传文件实现步骤
2020/09/15 Python
python 实现端口扫描工具
2020/12/18 Python
CSS3教程:边框属性border的极致应用
2009/04/02 HTML / CSS
Zavvi美国:英国娱乐之家
2017/03/19 全球购物
佳能英国官方网站:Canon UK
2017/08/08 全球购物
会展中心部门工作职责
2013/11/27 职场文书
成功的餐厅经营创业计划书
2014/01/15 职场文书
考试作弊被抓检讨书
2014/10/02 职场文书
2014年质量工作总结
2014/11/22 职场文书
总经理检讨书范文
2015/02/16 职场文书
导游词之青城山景区
2019/09/27 职场文书