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对象类型判断
Aug 27 PHP
浅析PKI加密解密 OpenSSL
Jul 01 PHP
php生成excel列序号代码实例
Dec 24 PHP
PHP生成短网址的3种方法代码实例
Jul 08 PHP
php相对当前文件include其它文件的方法
Mar 13 PHP
php使用socket post数据到其它web服务器的方法
Jun 02 PHP
php中define用法实例
Jul 30 PHP
PHP性能优化大全(php.ini)
May 20 PHP
PHP面向对象之事务脚本模式(详解)
Jun 07 PHP
PHP实现防止表单重复提交功能【基于token验证】
May 24 PHP
PHP实现用session来实现记录用户登陆信息
Oct 15 PHP
gearman中任务的优先级和返回状态实例分析
Feb 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
PHP针对多用户实现更换头像功能
2016/09/04 PHP
详解PHP的抽象类和抽象方法以及接口总结
2019/03/15 PHP
javascript得到XML某节点的子节点个数的脚本
2008/10/11 Javascript
JavaScript访问样式表代码
2010/10/15 Javascript
JavaScript实现继承的4种方法总结
2014/10/16 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
学习Bootstrap滚动监听 附调用方法
2016/07/02 Javascript
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
js 原型对象和原型链理解
2017/02/09 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
学习使用Bootstrap栅格系统
2017/05/11 Javascript
Vue学习笔记进阶篇之单元素过度
2017/07/19 Javascript
浅谈如何通过node.js对数据进行MD5加密
2018/05/16 Javascript
Vue项目安装插件并保存
2019/01/28 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
Node 代理访问的实现
2019/09/19 Javascript
在Vue项目中使用Typescript的实现
2019/12/19 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
JavaScript中的Proxy对象
2020/11/27 Javascript
用Python编程实现语音控制电脑
2014/04/01 Python
Python中pygame安装方法图文详解
2015/11/11 Python
python用装饰器自动注册Tornado路由详解
2017/02/14 Python
python如何实现异步调用函数执行
2019/07/08 Python
Python使用uuid库生成唯一标识ID
2020/02/12 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
2020/05/23 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
介绍一下JNDI的基本概念
2013/07/26 面试题
用Java语言将一个键盘输入的数字转化成中文输出
2013/01/25 面试题
夜大毕业生自我鉴定
2013/10/31 职场文书
狼和鹿教学反思
2014/02/05 职场文书
新文化运动的基本口号
2014/06/21 职场文书
党代会心得体会
2014/09/04 职场文书
结婚堵门保证书
2015/05/08 职场文书
村官2015年度工作总结
2015/10/14 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书