2017-08-29 41 views
0

我正在使用此功能,它工作正常,但只有問題是它刪除根文件夾,如果文件夾爲空。php函數刪除所有文件和文件夾大於1天

如果所有項目已經被先前的cron刪除,然後又被調用,那麼它將刪除forder單詞。任何幫助將是偉大的

rrmdir('/path/word'); 
function rrmdir($dir) 
{ 
    if (is_dir($dir)) 
    { 
     $objects = scandir($dir); 
     foreach ($objects as $object) 
     { 
      if ($object != "." && $object != "..") 
      { 
       if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); 
     if (filemtime($dir."/".$object) <= time()-60*60*24) @unlink($dir."/".$object); 

      } 
     } 
     reset($objects); 
     rmdir($dir); 
    } 
} 
+0

remove rmdir($ dir);最後是你的功能。 – Ajay

回答

0

困難的是,它取決於調用者的意圖。他們是否應該通過一個目錄,如果是的話 - 是否應該刪除這個目錄。當程序被調用rrmdir我有點希望它刪除我經過在目錄中。

function rrmdir($dir) 
{ 
    echo $dir.PHP_EOL; 
    if (is_dir($dir)) 
    { 
     $objects = scandir($dir); 
     foreach ($objects as $object) 
     { 
      if ($object != "." && $object != "..") 
      { 
       echo $object.'='.filetype($dir."/".$object).PHP_EOL; 
       if (filetype($dir."/".$object) == "dir") { 
        rrmdir($dir."/".$object); 
        rmdir($dir); 
       } 
       if (filemtime($dir."/".$object) <= time()-60*60*24) unlink($dir."/".$object); 

      } 
     } 
     reset($objects); 
     //rmdir($dir); 
    } 
} 

我搬到了rmdir到測試的子目錄。它先前刪除了所有目錄(包括傳入的目錄)。

+0

這些臨時文件正在自動創建和24小時後自動清除。如果我添加/即使PHP開始給予警告並不會刪除files.i沒有得到你的幾點。你如何自動添加'/ *' – swetlana

+0

我已經更新了答案,試圖堅持如何調用它。將rmdir移動到子目錄的測試中。 –

+0

它可以刪除文件,但無法刪除文件夾 – swetlana

相關問題