0
我嘗試刪除包含大量子文件夾和文件(> 1000)的大目錄。有很多功能爲此建立,我使用以下內容:不會刪除具有'刪除遞歸目錄'功能的所有文件
function rrmdir($dir) {
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != "." && $object != "..") {
if (filetype($dir . "/" . $object) == "dir"){
log_message(201,array(),'Try to delete folder: '.$dir.'/'.$object);
rrmdir($dir . "/" . $object);
}else{
log_message(201,array(),'Try to delete FILE: '.$dir.'/'.$object);
unlink($dir . "/" . $object);
}
}
}
reset($objects);
rmdir($dir);
}
}
問題是,許多文件被遺留。這是通常的行爲,是我的代碼錯了嗎?如果是平常的行爲,我該如何解決這個問題?
在此先感謝。
您需要檢查unlink()的返回值。在失敗時它將爲布爾值FALSE,例如沒有權限。只是因爲你可以看到一個文件並不意味着你可以刪除它。另外,你實際上並沒有刪除你找到的目錄,只是文件。 –
列出每個要刪除的文件效率不高,請考慮可用於刪除的os功能 – 2013-08-27 20:24:49
代碼中沒有錯誤檢查。所以你怎麼能期望everyhting工作?文件系統是獨立於腳本的系統,因此它可以獨立運行(例如,甚至可能在腳本認爲已經刪除的目錄中創建了新的文件,但它仍然運行)。 – hakre