1

このサイトや他のサイトを調べて、cron で使用できる単純な php スクリプトを見つけて、ディレクトリ内の X 日以上経過したファイルを削除しました。たくさんあるようですが、私にはうまくいきません。私は共有サーバー (GC ソリューション) を使用しており、ホスティング会社は優れていますが、私が使用しているパッケージにはシェル アクセスが含まれていないため、.sh または bash コマンドを使用できないと思います。

データベースの Mysqldump を実行し、それをホーム エリア ( /home/mysite/backups ) のディレクトリにコピーし、コピーをメールで送信するためのきちんとした php スクリプトがあります。これはすべて正常に機能します。ここで、バックアップ ディレクトリに 5 日分のバックアップを残すスクリプトを実行しようとしました。現在、このスクリプトを試しています:-

<?php


$dir = opendir('/home/mysite/backups");
if ($dir) {

        // Read directory contents
    while (false !== ($file = readdir($dir))) {

        // Check the create time of each file (older than 5 days)
        if (filemtime($file) < (time() - 60*60*24*5)) {
            unlink($file);
        }
    }
}
?>

動作しません。私の cron 設定文字列は次のとおりです:- php -q /home/mysite/public_html/scripts/delold6.php

html_publicの上から実行しようとしましたが、喜びはありません。バックアップディレクトリの権限は755に設定されています。バックアップスクリプトがダンプをこのディレクトリにコピーすると、ファイルは644に設定されます。これらを777にchmodしようとしました-喜びはありません. 誰でもここで助けてもらえますか。*find /path/to/your_directory -mtime +5 -exec rm -f {} \;* cron からも機能しません。

4

1 に答える 1

2

これは bash のみで行うことができます。PHPは必要ありません:

 find /your/directory -type f -mmin +720 -exec rm {} \;

--mmin パラメーターは、分単位のファイルの経過時間です

共有サーバーを使用している場合でも、shell_exec() を使用してこれを実行しようとすることができます。ほとんどのホスティング会社はこれを許可しています。

また、「.」をスキップするのを忘れていました。ループ内の「..」

于 2013-01-04T10:36:55.957 に答える