開発中の完全自動売買システムに必要不可欠なcronを、CakePHPで利用する方法のメモです。
※レンタルサーバーは、XREA+(Plus)
おさらい cronとは
Unix では、あらかじめ指定した日付や曜日、時間になると、コマンドを自動的に起動して実行するための仕組みが用意されています。これを cron といいます。
このcronが使えないレンタルサーバーでは、僕の目指している完全自動売買システムはできません。
※僕の選んだレンタルサーバーXREA+(Plus)では、cronを利用できます。
ただし、
・ ジョブの間隔は最短で1時間に1回。
・ ジョブの最大実行時間は3分。それを超えるものは強制停止される。
という制約があるので注意が必要です。
XREA+側のcron設定方法
XREA+側のcronジョブの設定方法としては、
XREA+の管理ページにログインして、「cronジョブ」の設定をします。
例えば、
月曜日から土曜日までの間、毎時59分に、
virtual/[XREAのID]/shell/crontask.sh
を起動する。といった場合、
59 * * * 1-6 virtual/[XREAのID]/shell/crontask.sh
このようになります。
そして、virtual/[XREAのID]/shell/crontask.sh の中身は、以下のようになります。
#!/bin/sh #PHP /usr/local/bin/php /virtual/[XREAのID]/public_html/[hogesubdomain].hiro25.com/files/crontest.php exit
/virtual/[XREAのID]/public_html/[hogesubdomain].hiro25.com/files/crontest.php
ここに記述する内容は、CakePHPでcronに対応するために、ちょっと注意が必要です。
CakePHPでcronに対応する
上述したXREA+側での設定内容
・ cronに実行させるファイル:webroot/files配下のcrontest.php
・ 実行させたいメソッド:
http://[hogesubdomain].hiro25.com/users/check/
という、usersコントローラのcheckアクション
この場合、
/virtual/[XREAのID]/public_html/[hogesubdomain].hiro25.com/files/crontest.php を、
< ?php $_GET['url'] = "users/check/"; require_once( dirname( dirname(__FILE__) ) . "/index.php" ); ?>
このように編集します。
これで、月曜日から土曜日までの間、毎時59分にプログラムが実行されるようになりました。
参考資料
・cronを使う-TIPS/CakePHP/cronを使う-プログラミングチップス
・crontabの書き方
・cronとは – インテル用語集