php的$_FILES的臨時(shí)儲(chǔ)存文件與回收機(jī)制實(shí)測(cè)過(guò)程
更新時(shí)間:2013年07月12日 17:37:27 作者:
上傳文件是怎么個(gè)原理,大概的想了下,應(yīng)該是一種回收機(jī)制:點(diǎn)擊了臨時(shí)文件空間,那么,php自身應(yīng)該自己維護(hù)這塊空間的回收,具體的測(cè)試過(guò)程如下,感興趣的朋友可以參考下哈
我想有跟我一樣的想法的人會(huì)這樣處理的: 上傳的文件只是想臨時(shí)使用,不需要把原文件保存?zhèn)溆?如resize之類(lèi)的操作,且這些后期的操作會(huì)出現(xiàn)在第二輪從客戶(hù)端請(qǐng)求時(shí)才操作的,如先上傳,把上傳的臨時(shí)文件路徑返回到瀏覽器,用戶(hù)點(diǎn)擊后再對(duì)這個(gè)臨時(shí)文件進(jìn)行操作;可是在實(shí)際的實(shí)現(xiàn)中發(fā)現(xiàn),這個(gè)臨時(shí)文件在二輪請(qǐng)求時(shí),竟然不存在了,跑到臨時(shí)文件夾中查看也沒(méi)有找到.
我在某q群中也遇到有人問(wèn)過(guò)這個(gè)問(wèn)題,導(dǎo)致的原因也是跟我的這個(gè)實(shí)現(xiàn)想法差不多.所以,就有個(gè)疑惑,上傳文件是怎么個(gè)原理?
不想去看php的實(shí)現(xiàn)代碼,我大概的想了下,應(yīng)該是一種回收機(jī)制:點(diǎn)擊了臨時(shí)文件空間,那么,php自身應(yīng)該自己維護(hù)這塊空間的回收;
于是自己嘗試上傳了一下極大的文件,大到足夠讓php運(yùn)行很長(zhǎng)時(shí)間,我以為我會(huì)看到它出現(xiàn)在臨時(shí)文件夾中.可惜的是,我竟然沒(méi)有看到它的身影,直到php返回:因?yàn)榇宋募^(guò)上傳限制;然后我使用小文件上傳打印出它的臨時(shí)文件夾路徑,發(fā)現(xiàn)它是以php開(kāi)頭,以tmp結(jié)束的文件命名方式;
我想了個(gè)方式,使用while卡住上傳php的本次進(jìn)程一定的時(shí)間再返回,這回我看到了臨時(shí)文件夾中的臨時(shí)文件,確實(shí)是以php**.tmp這樣的命名,如圖
如果在php運(yùn)行的過(guò)程中使用刷新頁(yè)面的非正常結(jié)束php的方式來(lái)中止php解析話(huà),那么這個(gè)臨時(shí)文件就會(huì)永久的保留,
如果php是正常的結(jié)束話(huà),這個(gè)文件會(huì)在php的結(jié)束時(shí)刪除.
同時(shí)我感覺(jué)到這個(gè)文件應(yīng)該是在上傳完成后再出現(xiàn)的:從我上傳大文件看不到它的身影推斷;
所以,php的臨時(shí)文件維護(hù)方式是php一結(jié)束就回收資源,想在第二輪請(qǐng)求使用這個(gè)文件話(huà),應(yīng)該自己移動(dòng)后進(jìn)行維護(hù)此文件,
在本次測(cè)試中,并沒(méi)有測(cè)試php include多個(gè)嵌套情況時(shí),在什么時(shí)機(jī)下進(jìn)行回收的.
我在某q群中也遇到有人問(wèn)過(guò)這個(gè)問(wèn)題,導(dǎo)致的原因也是跟我的這個(gè)實(shí)現(xiàn)想法差不多.所以,就有個(gè)疑惑,上傳文件是怎么個(gè)原理?
不想去看php的實(shí)現(xiàn)代碼,我大概的想了下,應(yīng)該是一種回收機(jī)制:點(diǎn)擊了臨時(shí)文件空間,那么,php自身應(yīng)該自己維護(hù)這塊空間的回收;
于是自己嘗試上傳了一下極大的文件,大到足夠讓php運(yùn)行很長(zhǎng)時(shí)間,我以為我會(huì)看到它出現(xiàn)在臨時(shí)文件夾中.可惜的是,我竟然沒(méi)有看到它的身影,直到php返回:因?yàn)榇宋募^(guò)上傳限制;然后我使用小文件上傳打印出它的臨時(shí)文件夾路徑,發(fā)現(xiàn)它是以php開(kāi)頭,以tmp結(jié)束的文件命名方式;
我想了個(gè)方式,使用while卡住上傳php的本次進(jìn)程一定的時(shí)間再返回,這回我看到了臨時(shí)文件夾中的臨時(shí)文件,確實(shí)是以php**.tmp這樣的命名,如圖
如果在php運(yùn)行的過(guò)程中使用刷新頁(yè)面的非正常結(jié)束php的方式來(lái)中止php解析話(huà),那么這個(gè)臨時(shí)文件就會(huì)永久的保留,
如果php是正常的結(jié)束話(huà),這個(gè)文件會(huì)在php的結(jié)束時(shí)刪除.
同時(shí)我感覺(jué)到這個(gè)文件應(yīng)該是在上傳完成后再出現(xiàn)的:從我上傳大文件看不到它的身影推斷;
所以,php的臨時(shí)文件維護(hù)方式是php一結(jié)束就回收資源,想在第二輪請(qǐng)求使用這個(gè)文件話(huà),應(yīng)該自己移動(dòng)后進(jìn)行維護(hù)此文件,
在本次測(cè)試中,并沒(méi)有測(cè)試php include多個(gè)嵌套情況時(shí),在什么時(shí)機(jī)下進(jìn)行回收的.
相關(guān)文章
淺析php面向?qū)ο髉ublic private protected 訪問(wèn)修飾符
本篇文章是對(duì)php面向?qū)ο髉ublic private protected 訪問(wèn)修飾符進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
php模式設(shè)計(jì)之觀察者模式應(yīng)用實(shí)例分析
這篇文章主要介紹了php模式設(shè)計(jì)之觀察者模式,結(jié)合實(shí)例形式分析了php觀察者模式的原理、應(yīng)用案例與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-09-09
PHP實(shí)現(xiàn)對(duì)文件鎖進(jìn)行加鎖、解鎖操作的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)對(duì)文件鎖進(jìn)行加鎖、解鎖操作的方法,結(jié)合實(shí)例形式分析了PHP針對(duì)文件進(jìn)行加鎖、解鎖操作的功能、實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-07-07
php在linux下檢測(cè)mysql同步狀態(tài)的方法
這篇文章主要介紹了php在linux下檢測(cè)mysql同步狀態(tài)的方法,是Linux下使用php檢測(cè)mysql同步狀態(tài)的實(shí)用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01
linux下的php-fpm參數(shù)配置介紹與參數(shù)優(yōu)化說(shuō)明
本文主要講解了在linux下php-fpm一些重要參數(shù)的中文詳細(xì)說(shuō)明,并詳細(xì)介紹了php-fpm關(guān)于性能方面的參數(shù)優(yōu)化介紹2017-12-12

