利用rmdir()函數(shù)實(shí)現(xiàn)PHP遞歸刪除目錄
我們大家都知道PHP 是一個(gè)小開(kāi)放源碼的一門(mén)技術(shù),隨著越來(lái)越多的人意識(shí)到它的實(shí)用性從而逐漸發(fā)展起來(lái)。Rasmus Lerdorf 在 1994 年發(fā)布了 PHP 的第一個(gè)版本。從那時(shí)起它就飛速發(fā)展,并在原始發(fā)行版上經(jīng)過(guò)無(wú)數(shù)的改進(jìn)和完善現(xiàn)在已經(jīng)發(fā)展到版本 4.0.3 。
#T#PHP 是一種嵌入在 HTML 并由服務(wù)器解釋的腳本語(yǔ)言。它可以用于管理動(dòng)態(tài)內(nèi)容、支持?jǐn)?shù)據(jù)庫(kù)、處理會(huì)話跟蹤,甚至構(gòu)建整個(gè)電子商務(wù)站點(diǎn)。它支持許多流行的數(shù)據(jù)庫(kù),包括 MySQL、PostgreSQL、Oracle、Sybase、Informix 和 Microsoft SQL Server。動(dòng)態(tài)內(nèi)容為什 么這么熱門(mén)?假設(shè)您正在管理有 10 個(gè)產(chǎn)品的電子商務(wù)站點(diǎn)。只要產(chǎn)品不是經(jīng)常變動(dòng)或者預(yù)料到它不會(huì)有太大的變動(dòng),那么手工編寫(xiě) 10 個(gè)帶有必要的信息、表單和諸如此類(lèi)內(nèi)容的靜態(tài)產(chǎn)品頁(yè)面是不困難的。但是,假設(shè)您在本月再要添加 10 個(gè)或更多產(chǎn)品,然后在下個(gè)月要更多,而且價(jià)格有時(shí)會(huì)變動(dòng)或者想改變站點(diǎn)的觀感。那么您就會(huì)陷入用手工重新編寫(xiě)數(shù)十個(gè),也許上百個(gè)靜態(tài)頁(yè)面的困境中。
另一方面,假設(shè)您從創(chuàng)建 product.php 頁(yè)面開(kāi)始。它沒(méi)有靜態(tài)信息,而是編碼成可以從產(chǎn)品數(shù)據(jù)庫(kù)中提取信息并動(dòng)態(tài)地構(gòu)建一個(gè)頁(yè)面。然后您就擁有了一個(gè)元數(shù)據(jù)頁(yè)面,它可以根據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中的信息 提供一個(gè)、一百個(gè)、甚至十萬(wàn)個(gè)單獨(dú)頁(yè)面?,F(xiàn)在網(wǎng)站管理員不再整天都簡(jiǎn)單重復(fù)更新靜態(tài)頁(yè)面的工作,因?yàn)樵诟鹿緮?shù)據(jù)庫(kù)中的信息同時(shí)就可以更新頁(yè)面上的信 息。這樣就消除了令人頭疼的時(shí)間延遲(在數(shù)據(jù)庫(kù)中更改信息和在網(wǎng)站上顯示信息之間的時(shí)間間隔)。下面我們來(lái)看一個(gè)php遞歸刪除目錄的例子,希望對(duì)大家有幫助。
rmdir()函數(shù)就可以搞定,但是要?jiǎng)h除一個(gè)非空目錄,將不能進(jìn)行快速的刪除,必須先將目錄中文件刪除,但是目錄里可能還會(huì)有子目錄所以要進(jìn)行PHP遞歸刪除目錄:
PHP遞歸刪除目錄代碼:
- <?php
- functiondeletedir($dir){
- if(!handle=@opendir($dir)){//檢測(cè)要打開(kāi)目錄是否存在
- die("沒(méi)有該目錄");
- }
- while(false!==($file=readdir($handle))){
- if($file!=="."&&$file!==".."){//排除當(dāng)前目錄與父級(jí)目錄
- $file=$dir.DIRECTORY_SEPARATOR.$file;
- if(is_dir($file)){
- deletedir($file);
- }else{
- if(@unlink($file)){
- echo"文件<b>$file</b>刪除成功。<br>";
- }else{
- echo"文件<b>$file</b>刪除失敗!<br>";
- }
- }
- }
- if(@rmdir($dir)){
- echo"目錄<b>$dir</b>刪除成功了。<br>\n";
- }else{
- echo"目錄<b>$dir</b>刪除失敗!<br>\n";
- }
- }
- //測(cè)試程序
- $dir="/var/www/test";
- deletedir($dir);
- ?>
- 在/var/www/test文件夾下建一寫(xiě)文件夾和文件測(cè)試
- shell>touchaaa
- shell>touchbbb
- shell>touchccc
- shell>toucheee
- shell>touchffff
- shell>mkdir111
- shell>mkdir222
- shell>mkdir333
- 分別再在111,222,333文件夾下建寫(xiě)文件這里就不多說(shuō)了,然后給他們權(quán)限
- shell>chown[url]www.www[/url]test-R