php
外部アプリケーションを使用して画像を生成する Web サービスを開発しています。画像ファイルを生成した後、html ページに挿入されます。このような:
<img src="img/52454879c7158.png">
ファイルを表示すると、そのファイルは不要になります。しかし、最終的には写真付きのフォルダーに大量のファイルが蓄積されます。ファイルの削除を自動化するにはどうすればよいですか?
php
外部アプリケーションを使用して画像を生成する Web サービスを開発しています。画像ファイルを生成した後、html ページに挿入されます。このような:
<img src="img/52454879c7158.png">
ファイルを表示すると、そのファイルは不要になります。しかし、最終的には写真付きのフォルダーに大量のファイルが蓄積されます。ファイルの削除を自動化するにはどうすればよいですか?
時間を削除するだけでunlinkを使用
unlink(folder/filename);
例
unlink("folder/images/image_name.jpeg");
PHPを使用して画像を削除した後に画像を表示
$imageUrl = "/images/123.jpg"; // link to image
$imginfo = getimagesize($imageUrl); // get mime info
header("Content-type: " . $imginfo['mime']); // add Content-type header
readfile($imageUrl); // show image
unlink($imageUrl); // delete image
Unixプログラムが見つけた特定のディレクトリ内のファイルを定期的に削除する必要があります。特定のケースでは、1 日以上経過した img フォルダーからすべての画像ファイルを削除する必要がありました。
これは、それを達成するための crontab エントリです。
コマンドは
crontab -l
Linux Crontab フォーマット
MIN HOUR DOM MON DOW CMD
0 0 * * * /usr/bin/find /yourpathto/img/ -type f -name '*.png' -mtime +1 -exec rm {} \;
(すべて一行で)
このコードは、/usr/bin/find
毎日午前 0 時にプログラムを実行し(0 0 * * *)
ます。/yourpathto/img
ファイル ( -type f
) で、.png で終わる名前 (-name '*.png') で、1 日前またはその前に作成されたもの( ) のすべてに対して呼び出されたディレクトリをチェックします-mtime +1
。コマンドは、それらのすべてのファイルに対して rm (削除) を実行します(-exec rm {} \;)
。
または、 を使用し*.*
て内部のすべてのファイルを削除できます/yourpathto/img/*.*
crontab をセットアップすると、自動的に実行され、/yourpathto/img/
ディレクトリからすべてのファイルが削除されます。
ファイルを削除する代替オプション:
function removeall()
{
$files = glob('path/to/img/*'); // get all file names
foreach($files as $file){ // iterate files
// Here you should make one condition that if user has view / download this file and remove it
if(is_file($file))
unlink($file); // delete file
}
}
ここで、ユーザーがファイルをダウンロードした場合、この関数よりもファイルを削除するために呼び出されるものを適用する必要があります。