CRONで一定時間ごとにファイルを削除する(さくらレンタルサーバーの場合)
CRONを利用して、サーバー上のファイルを一定時間ごとに削除する方法(さくらレンタルサーバーを利用)。
【CRONで動かすスクリプト】
CRONで直接コマンドを書くこともできますが、スクリプトのほうが柔軟性があるので、次のPHPファイルを動かすことにします。
<?php
foreach (glob('www/XXXX/images/*.jpg') as $filename) {
//変更があってから1時間以上たったファイルを削除
if(time()-filemtime($filename)>=3600){
unlink ($filename);
}
}
?>
このスクリプトでは、globでimagesフォルダ内のjpgファイルを対象に、filemtimeでファイルの更新日時を取得し、timeで現在の時間を取得して比較しています。1時間は3600秒なので、これよりも大きい場合(つまり1時間以上経過している場合)はファイルを削除します。
公開フォルダ(www)には置きたくないので、FTPでwwwの上のフォルダ(home/username)直下におきます。
【CRONの設定】
さくらのコントロールパネルから、「CRONの設定」で次のコマンドを入力(homeの後は自分のユーザー名になります)。
cd /home/XXXX; /usr/local/bin/php xxxxx.php 1> /dev/null
(1)
cd /home/XXXX;
プログラムを置いたところにまずは移動します。
(2)
/usr/local/bin/php
セミコロンと半角スペースを開け、phpの実行ファイルまでのパス。
(3)
xxxxx.php
さらに半角スペースを開けて、home/XXXX直下においたスクリプト名を指定。
(4)
1> /dev/null
これは実行結果をメールでは送らない場合につけます。付けない場合は実行されるごとにpostmasterにメールが届きます。
(5)
時間を指定します。
上の図は、「8時間毎にxxxxx.phpを実行する」という設定です。このスクリプト内で1時間以内のファイルは消さないことになっていますので、厳密には「9時間以内には必ず消去される」ということになりますね。