|
我在某q群中也遇到有人問過這個(gè)問題,導(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)行很長時(shí)間,我以為我會(huì)看到它出現(xiàn)在臨時(shí)文件夾中.可惜的是,我竟然沒有看到它的身影,直到php返回:因?yàn)榇宋募^上傳限制;然后我使用小文件上傳打印出它的臨時(shí)文件夾路徑,發(fā)現(xiàn)它是以php開頭,以tmp結(jié)束的文件命名方式;
我想了個(gè)方式,使用while卡住上傳php的本次進(jìn)程一定的時(shí)間再返回,這回我看到了臨時(shí)文件夾中的臨時(shí)文件,確實(shí)是以php**.tmp這樣的命名,如圖

如果在php運(yùn)行的過程中使用刷新頁面的非正常結(jié)束php的方式來中止php解析話,那么這個(gè)臨時(shí)文件就會(huì)永久的保留,
如果php是正常的結(jié)束話,這個(gè)文件會(huì)在php的結(jié)束時(shí)刪除.
同時(shí)我感覺到這個(gè)文件應(yīng)該是在上傳完成后再出現(xiàn)的:從我上傳大文件看不到它的身影推斷;
所以,php的臨時(shí)文件維護(hù)方式是php一結(jié)束就回收資源,想在第二輪請(qǐng)求使用這個(gè)文件話,應(yīng)該自己移動(dòng)后進(jìn)行維護(hù)此文件,
在本次測(cè)試中,并沒有測(cè)試php include多個(gè)嵌套情況時(shí),在什么時(shí)機(jī)下進(jìn)行回收的.
php技術(shù):php的$_FILES的臨時(shí)儲(chǔ)存文件與回收機(jī)制實(shí)測(cè)過程,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。