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

前端之家收集整理的这篇文章主要介绍了php的$_FILES的临时储存文件与回收机制实测过程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想有跟我一样的想法的人会这样处理的: 上传文件只是想临时使用,不需要把原文件保存备用,如resize之类的操作,且这些后期的操作会出现在第二轮从客户端请求时才操作的,如先上传,把上传的临时文件路径返回到浏览器,用户点击后再对这个临时文件进行操作;可是在实际的实现中发现,这个临时文件在二轮请求时,竟然不存在了,跑到临时文件夹中查看也没有找到. 我在某q群中也遇到有人问过这个问题,导致的原因也是跟我的这个实现想法差不多.所以,就有个疑惑,上传文件是怎么个原理?
不想去看PHP的实现代码,我大概的想了下,应该是一种回收机制:点击了临时文件空间,那么,PHP自身应该自己维护这块空间的回收; 于是自己尝试上传了一下极大的文件,大到足够让PHP运行很长时间,我以为我会看到它出现在临时文件夹中.可惜的是,我竟然没有看到它的身影,直到PHP返回:因为此文件超过上传限制;然后我使用小文件上传打印出它的临时文件夹路径,发现它是以PHP开头,以tmp结束的文件命名方式; 我想了个方式,使用while卡住上传PHP的本次进程一定的时间再返回,这回我看到了临时文件夹中的临时文件,确实是以PHP**.tmp这样的命名,如图

<IMG src="https://files.jb51.cc/file_images/article/201307/201307121731432.gif?201361217324"&gt;

如果在PHP运行的过程中使用刷新页面的非正常结束PHP的方式来中止PHP解析话,那么这个临时文件就会永久的保留,
如果PHP是正常的结束话,这个文件会在PHP的结束时删除. 同时我感觉到这个文件应该是在上传完成后再出现的:从我上传文件看不到它的身影推断;
所以,PHP的临时文件维护方式是PHP一结束就回收资源,想在第二轮请求使用这个文件话,应该自己移动后进行维护此文件,
在本次测试中,并没有测试PHP include多个嵌套情况时,在什么时机下进行回收的.

原文链接:https://www.f2er.com/php/25820.html

猜你在找的PHP相关文章