CakePHP cron さくらインターネット

さくらインターネット環境のCakePHPでcronを使ってみる

2013/09/26

表題の通り、さくらインターネット上に展開している CakePHP で cron を使う方法。
対象の CakePHP バージョンは 1.3 です。
コントローラーとアクションを指定して動かしたかったのですが、どうもうまく行かなかったので、あきらめて shell を使ってみました。

さくらインターネットでcron

cron で実現したかったのは、一日1回、API を叩いてデータを取得し、それをDBに登録するというもの。
手動でボタンを押せば取得、DBへのインサートを行う処理までは先に作成しておき、それを シェルに流用することとします。

shellファイル作成

/app/vendors/shells/item.php に cron で動作させる処理を作成。
アクション名を「main」とすると、アクション名を指定しなくても動作します。
独自のアクション名とする場合は、cron の動作時に指定します。

文字コード:UTF8、改行コード:LF で保存し、アップロードの際、パーミッションを「755」にするのを忘れずに。

cron設定

さくらのコントロールパネル左メニューの「CRONの設定」をクリック。

実行コマンド欄に以下を記述

文法は、
cd CakePHPのappまでのパス; phpのパス CakePHPのコンソールまでのパス shellファイル名 1>/dev/null
となります。
前述した、アクション名を main 以外の場合は、shellファイル名の部分を、 shellファイル名 action名 にすれば実行できると思います。

実行日時を設定します。
説明書きにあるとおり、毎時設定の場合は「*」を指定します。
例えば、毎時15分にcronを起動させたい場合は、
月:「*」、日:「*」、時:「*」、分:「15」とします。

1日1回、昼12時に起動させたい場合は、
月:「*」、日:「*」、時:「12」、分:「0」とします。

以上で設定は完了です。
テストする場合は、「分」を調整して、実際にcronとして起動するか確認しながら行なってみてください。

cronの設定の方法は手前味噌ですが、こちらを参照してください。
国外IPを遮断する.htaccessをcronで作成する

-CakePHP, cron, さくらインターネット
-, , , ,