有効期限の過ぎた仮登録ユーザをcronで自動的に削除する
【注】
今回の方法よりも、より適切と思われる方法を下記で紹介しています。
こちらも参考にしてくださいm(_ _)m
◆有効期限の過ぎた仮登録ユーザをcronで自動的に削除する〜その2〜
http://d.hatena.ne.jp/sutara_lumpur/20100625/1277424666
環境
やりたいこと
ユーザ登録で、記入されたアドレス宛にメールを送信して、本文に添えられたURLをクリックしてもらうことで登録完了する
というシステム。
メール送信後の仮登録の状態から一定時間が過ぎてしまった
ユーザを、自動で削除することはできなかと考えました。
できあがった設定
【コマンドラインからCakePHPのアクションを実行するために】
CakePHPの場合は、普通のphpのようにコマンドラインで『$ php /hoge/controller/action』のように実行させることができません。
下記のように『app/vendors/shells』の下に『cron』フォルダを作り、
その中にphpファイルを作って、index.phpへGETでパラメータとして
コントローラ名・アクション名を送る必要あるようです。
また、このcron_action.phpファイルには、実行権限を与えなくては
なりません。
【app/vendors/shells/cron/cron_action.php】
【SQLite】
database.phpにおいて、相対パスではなく絶対パスで指定しなければ、cronどころか通常の端末による操作でも
データベースに接続できないというエラーが表示されます。
【app/config/database.php】
class DATABASE_CONFIG {
var $default = array(
'driver' => 'sqlite',
'connect' => 'sqlite_open',
'database' => '/home/sutara/Cake_test/app/webroot/SQLite2/test.sqlite' //成功
//'database' => './SQLite2/test.sqlite' 失敗
);
}
【crontab】
端末から『crontab -e』と入力して編集画面を開き、下記を入力。『毎時59分に、cron_action.phpをphpとして実行する』という意味です。
59 * * * * /opt/lampp/bin/php /home/sutara/Cake_test/app/vendors/shells/cron/cron_action.php
注意点は、コマンド名のphpも、フルパスで書かなければならない
ということです。
crontabで実行されるときには、ほとんどの環境変数が設定されていないそうなので。
参考にしたページ
cron ジョブ - CakePHP Tips
cronでCakePHPのアクションを実行する方法。
crontab -eと/etc/crontabでcronを設定する方法
『crontab -e』で編集する場合、コマンドの前のユーザ名は必要はない。
root権限で『/etc/crontab』を直接編集する場合は、ユーザ名を記述。
crontabの書き方
実行時間の記述例をいろいろと。