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开发过程中关于继承的使用方法分享
Jun 17 PHP
过滤掉PHP数组中的重复值的实现代码
Jul 17 PHP
PHP设计模式之解释器模式的深入解析
Jun 13 PHP
php模板原理讲解
Nov 13 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
Nov 03 PHP
PHP中strtr字符串替换用法详解
Nov 26 PHP
thinkphp的URL路由规则与配置实例
Nov 26 PHP
常见的四种POST 提交数据方式(小总结)
Oct 08 PHP
php自定义函数实现汉字转换utf8编码的方法
Sep 29 PHP
注释PHP和html混合代码的小技巧(分享)
Nov 03 PHP
php 解决扫描二维码下载跳转问题
Jan 13 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
Mar 18 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的FTP学习(二)
2006/10/09 PHP
关于初学PHP时的知识积累总结
2013/06/07 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
2013/06/17 PHP
爱恋千雪-US-AscII加密解密工具(网页加密)下载
2007/06/06 Javascript
FireFox JavaScript全局Event对象
2009/06/14 Javascript
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
解决extjs grid 不随窗口大小自适应的改变问题
2014/01/26 Javascript
jquery 操作两个select实现值之间的互相传递
2014/03/07 Javascript
js实现上传图片预览的方法
2015/02/09 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
JS作用域深度解析
2016/12/29 Javascript
Three.js利用Detector.js插件如何实现兼容性检测详解
2017/09/26 Javascript
EasyUI Tree树组件无限循环的解决方法
2017/09/27 Javascript
浅谈微信JS-SDK 微信分享接口开发(介绍版)
2018/08/15 Javascript
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
基于JavaScript获取url参数2种方法
2020/04/17 Javascript
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
让 python 命令行也可以自动补全
2014/11/30 Python
python实现读取并显示图片的两种方法
2017/01/13 Python
Django 实现下载文件功能的示例
2018/03/06 Python
python中实现字符串翻转的方法
2018/07/11 Python
Python中函数参数匹配模型详解
2019/06/09 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
python3字符串操作总结
2019/07/24 Python
详解python实现可视化的MD5、sha256哈希加密小工具
2020/09/14 Python
Scrapy 配置动态代理IP的实现
2020/09/28 Python
用CSS3来实现社交分享按钮
2014/11/11 HTML / CSS
HTML5 canvas实现的静态循环滚动播放弹幕
2021/01/05 HTML / CSS
英国现代、当代和设计师家具店:Furntastic
2020/07/18 全球购物
高校生生产实习自我鉴定
2013/09/21 职场文书
电气专业推荐信范文
2013/11/18 职场文书
高中化学教学反思
2014/01/13 职场文书
毕业纪念册寄语大全
2015/02/26 职场文书
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python