Wiki | CodeIgniter
http://codeigniter.com/wiki/Cron_job_bootstrapper/
ということで、まずは上記を参照。
scriptをコピります。
どこでも良いので、適当なところにファイルを作成します。
たとえば、
/system/application/crons/cron.php
とか。
scriptの定数CRON_CI_INDEXの値を、環境に合わせCodeIgniterのindex.phpのパスに書き換えます。
define('CRON_CI_INDEX', '/var/www/vhosts/intranet/index.php');
あとは、実行権限を与えて準備完了。
chmod +x cron.php
/usr/local/bin/phpな場合も多々ある気がしますので、script一行目のphpパスも確認しておくのがベターです。
このスクリプトに引数を渡して実行すれば、空メールを受信したタイミングで登録処理を実行したいなど、CodeIgniterのController、Methodで作成したもので処理できます。
Controllerがuserで、Methodがregistの場合:
▼/etc/aliasでシステムアカウントhogeなメール受信処理例
hoge: "|~hoge/system/application/crons/cron.php --run=/user/regist > /dev/null 2>&1"
▼.qmail-default、.forwardなメール受信処理例
"|~hoge/system/application/crons/cron.php --run=/user/regist > /dev/null 2>&1"
http://codeigniter.com/wiki/Cron_job_bootstrapper/
ということで、まずは上記を参照。
scriptをコピります。
どこでも良いので、適当なところにファイルを作成します。
たとえば、
/system/application/crons/cron.php
とか。
scriptの定数CRON_CI_INDEXの値を、環境に合わせCodeIgniterのindex.phpのパスに書き換えます。
define('CRON_CI_INDEX', '/var/www/vhosts/intranet/index.php');
あとは、実行権限を与えて準備完了。
chmod +x cron.php
/usr/local/bin/phpな場合も多々ある気がしますので、script一行目のphpパスも確認しておくのがベターです。
補足:
index.phpが実行されると、/system/libraries/URI.phpの_fetch_uri_stringメソッドでPATH_INFO、QUERY_STRING、SCRIPT_NAMEいずれかの環境変数から実行パスを返しています。
上記Wikiのスクリプトでは、引数の--runに指定されたパスをそれら(SCRIPT_NAMEを除く)にセットしてindex.phpを呼び出して実行する流れです。
このスクリプトに引数を渡して実行すれば、空メールを受信したタイミングで登録処理を実行したいなど、CodeIgniterのController、Methodで作成したもので処理できます。
Controllerがuserで、Methodがregistの場合:
▼/etc/aliasでシステムアカウントhogeなメール受信処理例
hoge: "|~hoge/system/application/crons/cron.php --run=/user/regist > /dev/null 2>&1"
▼.qmail-default、.forwardなメール受信処理例
"|~hoge/system/application/crons/cron.php --run=/user/regist > /dev/null 2>&1"