php的$_FILES的臨時儲存檔案與回收機制實測過程_php技巧

來源:互聯網
上載者:User
我想有跟我一樣的想法的人會這樣處理的: 上傳的檔案只是想臨時使用,不需要把原檔案儲存備用,如resize之類的操作,且這些後期的操作會出現在第二輪從用戶端請求時才操作的,如先上傳,把上傳的臨時檔案路徑返回到瀏覽器,使用者點擊後再對這個臨時檔案進行操作;可是在實際的實現中發現,這個臨時檔案在二輪請求時,竟然不存在了,跑到臨時檔案夾中查看也沒有找到.

我在某q群中也遇到有人問過這個問題,導致的原因也是跟我的這個實現想法差不多.所以,就有個疑惑,上傳檔案是怎麼個原理?
不想去看php的實現代碼,我大概的想了下,應該是一種回收機制:點擊了臨時檔案空間,那麼,php自身應該自己維護這塊空間的回收;

於是自己嘗試上傳了一下極大的檔案,大到足夠讓php運行很長時間,我以為我會看到它出現在臨時檔案夾中.可惜的是,我竟然沒有看到它的身影,直到php返回:因為此檔案超過上傳限制;然後我使用小檔案上傳列印出它的臨時檔案夾路徑,發現它是以php開頭,以tmp結束的檔案命名方式;

我想了個方式,使用while卡住上傳php的本次進程一定的時間再返回,這回我看到了臨時檔案夾中的臨時檔案,確實是以php**.tmp這樣的命名,如圖
 
如果在php啟動並執行過程中使用重新整理頁面的非正常結束php的方式來中止php解析話,那麼這個臨時檔案就會永久的保留,
如果php是正常的結束話,這個檔案會在php的結束時刪除.

同時我感覺到這個檔案應該是在上傳完成後再出現的:從我上傳大檔案看不到它的身影推斷;
所以,php的臨時檔案維護方式是php一結束就回收資源,想在第二輪請求使用這個檔案話,應該自己移動後進行維護此檔案,
在本次測試中,並沒有測試php include多個嵌套情況時,在什麼時機下進行回收的.
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.