0

関連する質問をいくつか検索しましたが、理解できませんでした。

24時間ごとにフォルダーのすべてのファイルを削除したいのですが、警告が表示されることもあれば、機能することもあります。フォルダ パスはc:\wamp\www\Jamil.

ソースは次のとおりです。

<?php
$dir = "Jamil"; // directory name

foreach (scandir($dir) as $item) {
    if ($item == '.' || $item == '..')
        continue;

        if((time() - filemtime($item)) >= 30    && is_file($item)){
        unlink($dir.DIRECTORY_SEPARATOR.$item);
        echo "All files deleted";}
    }   
//rmdir($dir);

?>

いろいろなサイトからコードをコピーしました。誰でも助けることができますか?次の警告が表示されます。

警告: filemtime() [function.filemtime]: C:\wamp\www\delete1.php の 10 行目で、jamil.html の統計に失敗しました

4

3 に答える 3

1

これに php スクリプトを使用する場合でも、なんらかの方法で実行するようにスケジュールする必要があります。そのため、代わりに、cron またはスケジュールされたタスクを使用して、削除自体をスケジュールすることができます。 crontab のリファレンスはこちらです。Windows を使用している場合は、自分で小さなバッチ スクリプトを作成し、[コントロール パネル] に移動すると、タスク スケジューリングをガイドする素敵な小さなウィザードが表示されます。

PHP は、スケジュールされたタスクのためのツールではありません。ユーザーがいつでも削除を実行する必要がある場合は良いですが、スケジュールされたタスクでは必要ありません。

于 2013-04-26T09:43:49.970 に答える
0

この機能を試してください。

function wipedir($dir) {
        try{  
            if(is_dir($dir)){
                $mydir = opendir($dir);
                while(false !== ($file = readdir($mydir))) {
                    if($file != "." && $file != "..") {
                        chmod($dir.$file, 0777);
                        if(is_dir($dir.$file)) {
                            chdir('.');
                            destroy($dir.$file.'/');
                            rmdir($dir.$file) or DIE("Unable to delete $dir$file");
                        }else{
                            unlink($dir.$file) or DIE("Unable to delete $dir$file");
                        }
                    }
                }
                closedir($mydir);

                return true;
            }else{return true;}
        }catch (Exception $e){return false;} 
    }

したがって、使用法は

$dir = 'Jamil';
wipedir($dir);

これは、指定された間隔で crontab などによって実行されるファイルに配置する必要があります。

于 2013-04-26T09:31:28.217 に答える
0
is_file($item)

試す

 if(is_dir($dir.DIRECTORY_SEPARATOR.$item) && $item != ".." && $item != ".")
于 2013-04-26T09:56:04.107 に答える