Memo plus Alpha

メモにプラスアルファを加えて価値ある情報に。

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)

時間を指定します。

f:id:semanticist:20130516192244p:plain

上の図は、「8時間毎にxxxxx.phpを実行する」という設定です。このスクリプト内で1時間以内のファイルは消さないことになっていますので、厳密には「9時間以内には必ず消去される」ということになりますね。