2017-08-29 8 views
0

この関数を使用していますが、問題なく動作しますが、フォルダが空の場合はルートフォルダが削除されます。1日以上経過したすべてのファイルとフォルダを削除するPHP関数

以前のcronですべてのアイテムがすでに削除されていて、再び呼び出された場合は、forder wordが削除されます。どんな助けも素晴らしいでしょう。

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

削除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が警告を出し始めます。&ファイルを削除しません.iはいくつかのポイントを取得しませんでした。どのように自動的に '/ *'を追加するのですか? – swetlana

+0

私はあなたがそれをどのように呼び出しているか試してみるための答えを更新しました。 rmdirは、サブディレクトリのテスト内を移動します。 –

+0

ファイルを削除できますが、フォルダを削除できませんでした – swetlana

関連する問題