久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

在PHP中操作臨時文件

 硬核項目經(jīng)理 2021-05-31

在PHP中操作臨時文件

關于文件相關的操作,想必大家已經(jīng)非常了解了,,在將來我們刷到手冊中相關的文件操作函數(shù)時也會進行詳細的講解,。今天,我們先來了解一下在 PHP 中關于臨時文件相關的一些內容,。

獲取 PHP 的默認臨時創(chuàng)建文件目錄

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

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

print_r(sys_get_temp_dir());
// /tmp

創(chuàng)建一個臨時文件

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

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

sleep(10);

fclose($tmpFile);
// ll /tmp

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

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

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

最后,,PHP 還為我們提供了一個非常人性化的創(chuàng)建臨時文件的函數(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目錄沒有寫權限
$tmpFile = tempnam('/etc''testtmp');
$f = fopen($tmpFile, "w");
fwrite($f, "I'm tmp file.");
// ll /etc
// ll /tmp
// vim testtmpTUNucM

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

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

總結

又發(fā)現(xiàn)了這幾個非常好玩的函數(shù),,不管是做為臨時緩存還是進行一些文件的創(chuàng)建,,這兩個臨時文件操作的函數(shù)都非常有用。在日后的開發(fā)中我們可以多多嘗試使用這樣的函數(shù),,或許它們能夠為我們帶來不少的生產(chǎn)力提升,。

測試代碼:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202006/source/%E5%9C%A8PHP%E4%B8%AD%E6%93%8D%E4%BD%9C%E4%B8%B4%E6%97%B6%E6%96%87%E4%BB%B6.php

參考文檔:

https://www./manual/zh/function.sys-get-temp-dir.php

https://www./manual/zh/function.tmpfile.php

https://www./manual/zh/function.tempnam.php

    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多