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 和 XML: 使用expat函数(三)
Oct 09 PHP
php中在PDO中使用事务(Transaction)
May 14 PHP
如何在PHP中使用正则表达式进行查找替换
Jun 13 PHP
ThinkPHP文件缓存类代码分享
Apr 22 PHP
PHP CURL post数据报错 failed creating formpost data
Oct 16 PHP
php分页查询mysql结果的base64处理方法示例
May 18 PHP
PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
Aug 04 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
详解PHP中的外观模式facade pattern
Feb 05 PHP
Yii框架引入coreseek分页功能示例
Feb 08 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
Feb 27 PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
May 26 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
PHP四大安全策略
2014/03/12 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
PHP微信发送推送消息乱码的解决方法
2019/02/28 PHP
JS 继承实例分析
2008/11/04 Javascript
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
jquery animate实现鼠标放上去显示离开隐藏效果
2013/07/21 Javascript
node.js中的url.resolve方法使用说明
2014/12/10 Javascript
详解 javascript中offsetleft属性的用法
2015/11/11 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
Bootstrap项目实战之子栏目资讯内容
2016/04/25 Javascript
webpack下实现动态引入文件方法
2018/02/22 Javascript
express.js中间件说明详解
2019/03/19 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
JS 5种遍历对象的方式
2020/06/16 Javascript
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
Python使用MD5加密字符串示例
2014/08/22 Python
python有证书的加密解密实现方法
2014/11/19 Python
Ruby元编程基础学习笔记整理
2016/07/02 Python
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
django 中QuerySet特性功能详解
2019/07/25 Python
python安装本地whl的实例步骤
2019/10/12 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
python爬虫用scrapy获取影片的实例分析
2020/11/23 Python
Python使用Pygame绘制时钟
2020/11/29 Python
英国在线定制百叶窗网站:Swift Direct Blinds
2020/02/25 全球购物
Oracle中delete,truncate和drop的区别
2016/05/05 面试题
linux面试题参考答案(8)
2015/08/11 面试题
晚会邀请函范文
2014/01/24 职场文书
《长征》教学反思
2014/04/27 职场文书
运动会标语
2014/06/21 职场文书
Java面试题冲刺第十七天--基础篇3
2021/08/07 面试题
vue3.0 数字翻牌组件的使用方法详解
2022/04/20 Vue.js