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 相关文章推荐
phpmyadmin操作流程
Oct 09 PHP
PHP 时间转换Unix时间戳代码
Jan 22 PHP
PHP file_exists问题杂谈
May 07 PHP
PHP中3种生成XML文件方法的速度效率比较
Oct 06 PHP
php配合jquery实现增删操作具体实例
Dec 12 PHP
php数字运算验证码的实现代码
Jul 30 PHP
WordPress中查询文章的循环Loop结构及用法分析
Dec 17 PHP
php出租房数据管理及搜索页面
May 23 PHP
PHP7如何开启Opcode打造强悍性能详解
May 11 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
Apr 09 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
May 01 PHP
Yii Framework框架使用PHPExcel组件的方法示例
Jul 24 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 GeoIP的使用教程
2011/03/09 PHP
解决laravel资源加载路径设置的问题
2019/10/14 PHP
JavaScript DOM 学习第七章 表单的扩展
2010/02/19 Javascript
js 控制下拉菜单刷新的方法
2013/03/03 Javascript
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
javascript 通用loading动画效果实例代码
2014/01/14 Javascript
jQuery多媒体插件jQuery Media Plugin使用详解
2014/12/19 Javascript
原生javaScript实现图片延时加载的方法
2014/12/22 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
jQuery设置和移除文本框默认值的方法
2015/03/09 Javascript
Vue.js实现一个自定义分页组件vue-paginaiton
2016/09/05 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
2016/12/02 Javascript
nodejs构建本地web测试服务器 如何解决访问静态资源问题
2017/07/14 NodeJs
JQuery EasyUI 结合ztrIee的后台页面开发实例
2017/09/01 jQuery
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
详解vite2.0配置学习(typescript版本)
2021/02/25 Javascript
[01:36:19]Secret vs NB 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python实现用户管理系统
2018/01/10 Python
python实现连续图文识别
2018/12/18 Python
pandas分区间,算频率的实例
2019/07/04 Python
Python列表切片常用操作实例解析
2019/12/16 Python
Python和Anaconda和Pycharm安装教程图文详解
2020/02/04 Python
python使用turtle库绘制奥运五环
2020/02/24 Python
如何基于线程池提升request模块效率
2020/04/18 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
总结30个CSS3选择器
2017/04/13 HTML / CSS
美国钻石商店:Zales
2016/11/20 全球购物
Mankind西班牙男士护肤品网站:购买皮肤护理、护发和剃须
2017/04/27 全球购物
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
农场厂长岗位职责
2013/12/28 职场文书
导师评语大全
2014/04/26 职场文书
2015年高一班主任工作总结
2015/05/13 职场文书
如何有效防止sql注入的方法
2021/05/25 SQL Server
Python使用socket去实现TCP客户端和TCP服务端
2022/04/12 Python