亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

如何在PHP中操作臨時文件

 更新時間:2021年05月14日 08:48:21   作者:硬核項目經(jīng)理  
關(guān)于文件相關(guān)的操作,想必大家已經(jīng)非常了解了,在將來我們刷到手冊中相關(guān)的文件操作函數(shù)時也會進行詳細的講解。今天,我們先來了解一下在 PHP 中關(guān)于臨時文件相關(guān)的一些內(nèi)容。

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

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

當然,在動態(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+ 類型的,也就是直接就是可讀寫的文件。當調(diào)用 fclose() 的時候,這個臨時文件將自動刪除掉。手冊中說使用這個函數(shù)創(chuàng)建的文件在腳本運行結(jié)束后也會自動刪除,但是在測試后發(fā)現(xiàn)腳本結(jié)束時文件并不會刪除。

在調(diào)用函數(shù)并寫入內(nèi)容后,我們暫停了十秒。其實就是為了去 /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目錄沒有寫權(quán)限
$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 權(quán)限的目錄,沒有 root 帳戶權(quán)限的話我們是無法創(chuàng)建修改文件的。如果是這種沒有權(quán)限的目錄,或者是壓根就不存在的目錄,tempnam() 函數(shù)就會將文件生成到臨時文件目錄中去。如果目錄是正常存在并且可以寫的,就像第一段代碼一樣,文件就會正常在這個目錄進行創(chuàng)建。

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

總結(jié)

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

測試代碼:

github.com/zhangyue050…

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

相關(guān)文章

  • PHP中使用jQuery+Ajax實現(xiàn)分頁查詢多功能操作(示例講解)

    PHP中使用jQuery+Ajax實現(xiàn)分頁查詢多功能操作(示例講解)

    下面小編就為大家?guī)硪黄狿HP中使用jQuery+Ajax實現(xiàn)分頁查詢多功能操作(示例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • PHP與MySQL開發(fā)中頁面亂碼的產(chǎn)生與解決

    PHP與MySQL開發(fā)中頁面亂碼的產(chǎn)生與解決

    一般來說,亂碼的出現(xiàn)有2種原因,首先是由于編碼(charset)設(shè)置錯誤,導致瀏覽器以錯誤的編碼來解析,從而出現(xiàn)了滿屏亂七八糟的“天書”,其次是文件被以錯誤的編碼打開,然后保存,比如一個文本文件原先是GB2312編碼的,卻以UTF-8編碼打開再保存。要解決上述亂碼問題,首先需要知道開發(fā)中哪些環(huán)節(jié)涉及到了編碼:
    2008-03-03
  • PHP插件PHPMailer發(fā)送郵件功能

    PHP插件PHPMailer發(fā)送郵件功能

    這篇文章主要為大家詳細介紹了PHP發(fā)送郵件功能,一個PHPMailer插件輕松實現(xiàn)郵件發(fā)送功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Ajax請求PHP后臺接口返回信息的實例代碼

    Ajax請求PHP后臺接口返回信息的實例代碼

    今天小編就為大家分享一篇Ajax請求PHP后臺接口返回信息的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • PHP實現(xiàn)加密的幾種方式介紹

    PHP實現(xiàn)加密的幾種方式介紹

    這篇文章主要介紹了PHP實現(xiàn)加密的幾種方式,非常全面實用,都是項目中經(jīng)常需要用到的,需要的朋友可以參考下
    2015-02-02
  • php 數(shù)組二分法查找函數(shù)代碼

    php 數(shù)組二分法查找函數(shù)代碼

    search函數(shù) 其中$array為數(shù)組,$k為要找的值,$low為查找范圍的最小鍵值,$high為查找范圍的最大鍵值
    2010-02-02
  • PHP實現(xiàn)的解漢諾塔問題算法示例

    PHP實現(xiàn)的解漢諾塔問題算法示例

    這篇文章主要介紹了PHP實現(xiàn)的解漢諾塔問題算法,簡單描述了漢諾塔問題及相應的實現(xiàn)算法,并結(jié)合實例形式給出了PHP具體操作技巧,需要的朋友可以參考下
    2018-08-08
  • php中替換字符串函數(shù)strtr()和str_repalce()的用法與區(qū)別

    php中替換字符串函數(shù)strtr()和str_repalce()的用法與區(qū)別

    在php中替換函數(shù)主要有strtr(),str_repalce()這兩個函數(shù),下面這篇文中主要給大家介紹下這兩者之間的區(qū)別和用法,文中通過示例代碼介紹的很詳細,有需要的朋友們可以參考借鑒,下面跟著小編一起來學習學習吧。
    2016-11-11
  • 關(guān)于php支持分塊與斷點續(xù)傳文件下載功能代碼

    關(guān)于php支持分塊與斷點續(xù)傳文件下載功能代碼

    一篇關(guān)于php流下載,就是可以支持分塊與斷點續(xù)傳文件下載,有需要的朋友可以看看
    2014-05-05
  • PHP函數(shù)extension_loaded()用法實例

    PHP函數(shù)extension_loaded()用法實例

    這篇文章主要介紹了PHP函數(shù)extension_loaded()用法,實例分析了函數(shù)extension_loaded()檢查一個擴展是否已經(jīng)加載的具體用法,并補充說明了查看本機已加載php擴展的方法,需要的朋友可以參考下
    2015-01-01

最新評論