0

スクリプトやその他のオプションを使用して、特定の日付のファイルをサーバーから自動的に削除できる方法があるかどうか疑問に思いました。

AS3 eCardアプリケーションを作成しました。これにより、phpスクリプトがメッセージなどの関連する詳細を含む* .txtファイルをフォルダーに書き込み、「n」日以上経過したファイルを何らかの方法で自動的に削除できるかどうかを知りたいです。サイトを乱雑にしないでください。

PHPの修正:

    <?php

if ($handle = opendir('/myFolder/holdingFolder')) {

while (false !== ($file = readdir($handle))) { 
    $filelastmodified = filemtime($file);

    if((time() - $filelastmodified) > 14*24*3600)
    {
       unlink($file);
    }

}

closedir($handle); 
}
?>

私はまだphpを学んでおり、経験豊富な人がこれを調べて正しい方向を示すことができれば、作成から14日後にフォルダー内のファイルを削除する正しい方法であると思いますか?

もしそうなら、私のサーバーはWindows / Pleskですが、それを実行するために特別なコマンドが必要ですか?また、どのくらいの頻度でアドバイスしますか?

4

3 に答える 3

1

あなたが言ったことに基づいて、あなたが始める最も簡単な方法は、cron ジョブと php スクリプトだと思います。

作成日をチェックして古いファイルを削除するファイルをループする PHP スクリプトを作成します。次に、任意のスケジュールで実行できる cron ジョブに PHP スクリプトを設定します。

もちろん、これにアプローチする方法は 1000 通りありますが、既に PHP を知っているようで、cron は任意の *nix システムで使用できます。

これは、Crontab の情報と使用法に関するランダムな Google の結果へのリンクです。

于 2012-11-15T23:23:26.500 に答える
0

試す:

<?php
$dir = '/path/to/files/';
$days = 3600 * 24 * 7; // 7 days
if($handle = opendir($dir)) {

    /* This is the correct way to loop over the directory. */
    while (false !== ($file = readdir($handle))) {
        if ( filemtime($dir.$file) <= time()-$days) {
           unlink($dir.$file);
        }
    }

    closedir($handle);
}

次に、cron経由でこのスクリプトを実行します

于 2012-11-15T23:41:38.547 に答える
0

cron にアクセスできる場合は、PHP は必要ありません。たとえば、1 日 1 回....

23 4 * * * find /your/directory -iname \*.txt -mtime +3 -exec rm -f {} \;

cron にアクセスできない場合は、シャットダウン機能としてガベージ コレクションとして実行します。例 (Kyle Hudson のコードをあからさまに盗みますが、彼はここからコメントをコピーしたことにも注意してください;)

function gc_txt_files()
{
   $dir = '/path/to/files/';
   $days = 3600 * 24 * 7; // 7 days
   if($handle = opendir($dir)) {
        /* This is the correct way to loop over the directory. */
        while (false !== ($file = readdir($handle))) {
           if ( filemtime($dir.$file) <= time()-$days) {
              unlink($dir.$file);
           }
        }
        closedir($handle);
    }
}
if (17==rand(0,200)) { // adjust 200 depending on how frequently you want to clear out
    register_shutdown_function('gc_txt_files');
}
于 2012-11-16T00:13:35.220 に答える