濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > 如何在PHP中操作臨時(shí)文件

如何在PHP中操作臨時(shí)文件

熱門標(biāo)簽:安裝電銷外呼系統(tǒng) 福州人工外呼系統(tǒng)哪家強(qiáng) 衡水外呼系統(tǒng)平臺(tái) 釘釘打卡地圖標(biāo)注 常州地圖標(biāo)注服務(wù)商 注冊(cè)400電話申請(qǐng) 百度商鋪地圖標(biāo)注 地圖標(biāo)注平臺(tái)怎么給錢注冊(cè) 新河科技智能外呼系統(tǒng)怎么樣

獲取 PHP 的默認(rèn)臨時(shí)創(chuàng)建文件目錄

學(xué)習(xí)過 Linux 操作系統(tǒng)的都會(huì)知道有一個(gè)目錄是 /tmp 目錄( Windows 中一般是:C:\Windows\Temp\ ),它是用來存放系統(tǒng)的一些臨時(shí)文件的,所以,這個(gè)目錄也叫做臨時(shí)文件目錄。很多軟件都會(huì)將一些臨時(shí)保存的文件放在這個(gè)目錄里面,包括一些緩存、一些臨時(shí)生成的腳本之類的。PHP 在默認(rèn)情況下也會(huì)將臨時(shí)文件目錄指向這個(gè)目錄,包括 SESSION 文件之類的臨時(shí)文件都會(huì)保存在這里。它可以在 php.ini 文件中通過 sys_tmp_dir 進(jìn)行設(shè)置。

當(dāng)然,在動(dòng)態(tài)運(yùn)行的 PHP 程序中,我們也可以通過一個(gè)函數(shù)來獲得當(dāng)前的臨時(shí)文件目錄。

print_r(sys_get_temp_dir());
// /tmp

創(chuàng)建一個(gè)臨時(shí)文件

既然有了臨時(shí)文件目錄,PHP 當(dāng)然也貼心的為我們準(zhǔn)備好了直接去創(chuàng)建一個(gè)臨時(shí)文件的函數(shù)。

$tmpFile = tmpfile();
fwrite($tmpFile, "I'm tmp file.");
// ll /tmp
// vim phpbnAjbE

sleep(10);

fclose($tmpFile);
// ll /tmp

tmpfile() 函數(shù)就是用來創(chuàng)建這個(gè)臨時(shí)文件的,我們不需要為它指定文件名,也不需要為它指定路徑,同時(shí),它創(chuàng)建的文件是 w+ 類型的,也就是直接就是可讀寫的文件。當(dāng)調(diào)用 fclose() 的時(shí)候,這個(gè)臨時(shí)文件將自動(dòng)刪除掉。手冊(cè)中說使用這個(gè)函數(shù)創(chuàng)建的文件在腳本運(yùn)行結(jié)束后也會(huì)自動(dòng)刪除,但是在測(cè)試后發(fā)現(xiàn)腳本結(jié)束時(shí)文件并不會(huì)刪除。

在調(diào)用函數(shù)并寫入內(nèi)容后,我們暫停了十秒。其實(shí)就是為了去 /tmp 目錄里看一下這個(gè)文件是否生成成功。根據(jù)文件創(chuàng)建的時(shí)間,我們找到了生成的這個(gè)對(duì)應(yīng)的文件。然后在十秒后執(zhí)行了 fclose() 之后,再次到目錄查看,就會(huì)發(fā)現(xiàn)文件已經(jīng)被自動(dòng)刪除了。

根據(jù)目錄狀態(tài)創(chuàng)建一個(gè)唯一名稱的臨時(shí)文件

最后,PHP 還為我們提供了一個(gè)非常人性化的創(chuàng)建臨時(shí)文件的函數(shù)。

$tmpFile = tempnam('/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source', 'testtmp');
$f = fopen($tmpFile, "w");
fwrite($f, "I'm tmp file.");
// ll /tmp
// vim testtmpH7bptZ

// etc目錄沒有寫權(quán)限
$tmpFile = tempnam('/etc', 'testtmp');
$f = fopen($tmpFile, "w");
fwrite($f, "I'm tmp file.");
// ll /etc
// ll /tmp
// vim testtmpTUNucM

tempnam() 函數(shù),它會(huì)根據(jù)目錄的狀態(tài)去生成一個(gè)唯一名稱的臨時(shí)文件。什么叫根據(jù)目錄狀態(tài)呢?從上面的代碼注釋中可以看出,第二段的 /etc 目錄一般是 root 權(quán)限的目錄,沒有 root 帳戶權(quán)限的話我們是無法創(chuàng)建修改文件的。如果是這種沒有權(quán)限的目錄,或者是壓根就不存在的目錄,tempnam() 函數(shù)就會(huì)將文件生成到臨時(shí)文件目錄中去。如果目錄是正常存在并且可以寫的,就像第一段代碼一樣,文件就會(huì)正常在這個(gè)目錄進(jìn)行創(chuàng)建。

tempnam() 函數(shù)的第二個(gè)參數(shù)是指定生成文件名的前綴。tmpfile() 函數(shù)是無法指定文件名的,而這個(gè)函數(shù)則是可以給文件名一個(gè)固定的前綴,并保證前綴之后自動(dòng)生成的文件名部分是唯一的。

總結(jié)

又發(fā)現(xiàn)了這幾個(gè)非常好玩的函數(shù),不管是做為臨時(shí)緩存還是進(jìn)行一些文件的創(chuàng)建,這兩個(gè)臨時(shí)文件操作的函數(shù)都非常有用。在日后的開發(fā)中我們可以多多嘗試使用這樣的函數(shù),或許它們能夠?yàn)槲覀儙聿簧俚纳a(chǎn)力提升。

測(cè)試代碼:

github.com/zhangyue050…

以上就是如何在PHP中操作臨時(shí)文件的詳細(xì)內(nèi)容,更多關(guān)于PHP操作臨時(shí)文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • ThinkPHP5.0多個(gè)文件上傳后找不到臨時(shí)文件的修改方法
  • PHP上傳 找不到臨時(shí)文件夾的解決方法
  • 如何批量清理系統(tǒng)臨時(shí)文件(語言:C#、 C/C++、 php 、python 、java )
  • PHP臨時(shí)文件的安全性分析

標(biāo)簽:唐山 六安 克拉瑪依 白城 遼陽 鷹潭 柳州 鶴崗

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《如何在PHP中操作臨時(shí)文件》,本文關(guān)鍵詞  如,何在,PHP,中,操作,臨時(shí),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《如何在PHP中操作臨時(shí)文件》相關(guān)的同類信息!
  • 本頁收集關(guān)于如何在PHP中操作臨時(shí)文件的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    射阳县| 驻马店市| 抚宁县| 桐乡市| 玛纳斯县| 星座| 泽库县| 娄烦县| 南木林县| 霸州市| 九台市| 易门县| 滁州市| 米林县| 临城县| 高密市| 仙桃市| 昌江| 苏尼特左旗| 中山市| 广东省| 礼泉县| 天柱县| 阿克陶县| 孟村| 涞水县| 屏边| 昂仁县| 巧家县| 咸丰县| 彰化县| 孟州市| 常山县| 大竹县| 合肥市| 子长县| 邛崃市| 承德市| 缙云县| 浦东新区| 汶上县|