站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        PHP中如何創(chuàng)建臨時文件?淺析操作臨時文件方法

        本篇文章帶大家了解一下PHP中的臨時文件,介紹一下獲取默認臨時創(chuàng)建文件目錄、創(chuàng)建臨時文件的方法,希望對大家有所幫助!

        PHP中如何創(chuàng)建臨時文件?淺析操作臨時文件方法

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

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

        學習過 Linux 操作系統(tǒng)的都會知道有一個目錄是 /tmp 目錄( Windows 中一般是:C:WindowsTemp ),它是用來存放系統(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ù),或許它們能夠為我們帶來不少的生產力提升。

        測試代碼:https://github.com/zhangyue0503/dev-blog/blob/master/php/202006/source/在PHP中操作臨時文件.php

        推薦學習:《PHP視頻教程》

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 亚洲精品视频免费观看| 国产午夜无码精品免费看| 亚洲精品乱码久久久久久| 国产92成人精品视频免费| 无码人妻精品一区二| 国产成人精品久久亚洲高清不卡 | 最新国产精品精品视频| 国产在线精品一区二区高清不卡 | 国产亚洲婷婷香蕉久久精品| 国产精品自在在线午夜福利| 国产成人精品一区在线| 人妻少妇精品视频二区| 精品久久久久久无码人妻蜜桃| 久久精品午夜一区二区福利| 毛片a精品**国产| 国产精品九九久久免费视频| 久久r热这里有精品视频| 国产精品一久久香蕉国产线看观看| 精品久久综合1区2区3区激情| 办公室久久精品| 成人精品在线视频| 国产亚洲色婷婷久久99精品| 久久亚洲国产成人精品性色| 无码人妻精品一区二区三区99仓本 | 日韩一区二区三区精品| 国产高清在线精品一区小说 | 国内精品国语自产拍在线观看| 九九在线精品视频专区| 国产精品无码成人午夜电影| 亚洲欧洲精品无码AV| 亚洲午夜精品久久久久久浪潮| 精品伦精品一区二区三区视频| 久久精品成人免费网站| 91精品国产9l久久久久| 99精品无人区乱码在线观看| 国产精品丝袜黑色高跟鞋| 中文字幕久久精品无码| 亚洲国产精品国产自在在线| 日韩精品无码永久免费网站| 欧美黑人巨大videos精品| 免费精品国自产拍在线播放 |