有効期限の過ぎた仮登録ユーザをcronで自動的に削除する〜その2〜

前回の方法では、仮登録ユーザを削除する処理をcronからだけでなく
ブラウザでURLを入力しても実行できてしまうという欠点がある、と
CakePHPのフォーラムで指摘を受けました。


今回は、CakePHPコンソールから独自のシェルを実行する、という処理を
cronで自動的に行えるようにします。

環境

独自のシェルを作成

有効期限の過ぎた仮登録ユーザを検索・削除する処理です。
シェルの名前は『refresh』です。

【/vendors/shells/refresh.php
class RefreshShell extends Shell{
var $uses = array('User');
function main(){
$conditions = array(
'User.status' => '0', //1が正常、0は仮登録
'User.created <' => date('Y-m-d H:i:s', strtotime('-1 hours'))
);
$this->User->deleteAll($conditions);
}
}

crontabを設定

端末で『crontab -e』と入力して編集画面を開き、以下のように記述。
毎時59分に、CakePHPコンソールでrefreshシェルを実行する、という意味です。

59 * * * * /opt/lampp/bin/php /home/sutara/Cake_test/cake/console/cake.php refresh -app /home/sutara/Cake_test/app
php (CakePHPコンソールのphpファイル) (シェル名) -app (appフォルダ)

感想・参考ページ

こちらのほうが前回の方法よりもシンプルで、そして一般のアクションとの
住みわけも明確にできていいですね。


※database.phpSQLiteのDBファイルの場所をフルパスで指定しなければ
ならないのは、前回と同じ。