重複の可能性:
Webサーバーからファイルを自動的に削除します
file_put_contents()
デバッグに必要な場合に備えて、XMLコンテンツをテキストファイルに記録しています。
一定時間後にこのファイルを削除するにはどうすればよいですか?
ログフォルダに制限.htaccess
がありますが、情報(顧客のアドレスなど)をWebに長時間残したくありません。
重複の可能性:
Webサーバーからファイルを自動的に削除します
file_put_contents()
デバッグに必要な場合に備えて、XMLコンテンツをテキストファイルに記録しています。
一定時間後にこのファイルを削除するにはどうすればよいですか?
ログフォルダに制限.htaccess
がありますが、情報(顧客のアドレスなど)をWebに長時間残したくありません。
さて、あなたが仕事のために間違ったツールを使用していることを他のみんなに同意している間、あなたの質問はかなり簡単です。だからここに行きます:
cron
またはWindowsのスケジュールされたタスクのようなツールを使用するcron
毎分/5分などを呼び出すスクリプトは非常に簡単です。
<?php
$dh = opendir(PATH_TO_DIRECTORY);
while( ($file = readdir($dh)) !== false ) {
if( !preg_match('/^[.]/', $file) ) { // do some sort of filtering on files
$path = PATH_TO_DIRECTORY . DIRECTORY_SEPARATOR . $file;
if( filemtime($path) < strtotime('-1 hour') ) { // check how long it's been around
unlink($path); // remove it
}
}
}
Linuxで作業している場合にも使用できfind
ますが、@ Rawkodeがこれを書いているときに投稿したので、その解決策に対する彼のエレガントな答えを残しておきます。
php.ini設定を尊重するPHPerror_log()関数を使用する必要があります。
error_log('Send to PHP error log');
error_log('Sent to my custom log', 3, "/var/tmp/my-errors.log");
組み込み関数– filectime
–を使用して、ログファイルの作成日を追跡し、削除するのに十分古いログファイルを削除できます。
このコードはlogsディレクトリを検索し、2週間前のログを削除します。
$logs = opendir('logs');
while (($log = readdir($logs)) !== false)
{
if ($log == '.' || $log == '..')
continue;
if (filectime('logs/'.$log) <= time() - 14 * 24 * 60 * 60)
{
unlink('logs/'.$log);
}
}
closedir($logs);
ロギングをより適切に処理する必要がありますが、質問に答えるには、*nixfind
コマンドを使用します。
find /path/to/files* -mtime +5 -delete
これにより、5日間変更されていないすべてのファイルが削除されます。自分のニーズに合わせて調整します。
あなたがそれを解決することができる2つの方法があります:
ログを1つのファイルにのみ書き込む場合は、次のような方法でファイルを空にすることができます。
<?php file_put_contents($logpath, "");
多くのファイルを生成する場合は、次のようなクリーンアップ関数を作成できます。
<?php
$logpath = "/tmp/path/to/log/";
$dirh = opendir($logpath);
while (($file = readdir($dh)) !== false) {
if(in_array($file, array('.', '..'))) continue;
unlink($logpath . $file);
}
closedir($dirh);
サーバーのスケジュールされたタスク(* nixシステムではCronジョブとして最もよく知られています)を設定して、定期的に実行し、左側のログファイルを削除することができます。タスクは、その仕事をするPHPコードを実行することです。
Cronジョブの概要を参照してくださいw