[CakePHP2]Cronの使い方・設定方法




CakePHP2でCronを使う方法です。
CakePHP Ver1とはだいぶ変更されているので、新しく覚え直す必要がありますね。
CakePHPでCronを使うときは「Shell」を使います。「Shell」というと聞きなれないですが、「Controller」や「Model」が使いこなせていればさほど問題は無く使いこなせると思います。

ファイルの作成とテーブル・カラムの作成

まず、「Cron」を使うには、実行するファイルを作る必要があります。
どこに作るか?というと

Appフォルダの中の「Console>Command」の中に作成します。
・Config
・Console>Command ←ここです。
・Controller

前準備としてMySQLに「post」というテーブルを作り、「name」というカラムを作成して下さい。
そして「PostShell.php」というファイルを作成し、以下のソースをコピーしましょう。
下記のアクションは「name」というカラムに「text」という文字を登録するプログラムです。

「controller」を作るときのソースと良く似ています。
まず、「App::uses(‘App’,’/Console/Command’);」で「AppShell.php」を読み込みます。

そして、「class PostShell extends AppShel{}」というクラスを作ります。

実行テスト

Cronに登録する前に、コンソールから直接ファイルを叩いてテストしてみます。
このときの書き方には注意が必要です。
/phpへのパス /CakeのCoreライブラリへのパス/Console.cake.php Shellファイル名 アクション名 -app /CakeのAppディレクトリ/

長いので細かく説明しますと

「PHPへのパス」
これはコンソールで whereis php と入力すると表示されます。私の環境では「/usr/bin/php」でした。

「CakeのCoreライブラリへのパス」
Cakeのコアライブラリを設置したパスを記載します。
/usr/lib/cake/lib/Cake/ などとなります。(設置した場所により異なります)
この後ろに、Console.cake.phpをくっつけます。
/usr/lib/cake/lib/Cake/Console/cake.php

「Shellファイル名」
今回はPostShell.phpというファイルを作成したので、Postを記載します。Shell.phpは必要ありません。

「アクション名」
今回動かしたいアクションは add なので add となります。

「CakeのAppディレクトリ」
設置した場所により異なります。私の場合は「/home/me/test」でした。
ディレクトリの前に -app をつけます。

上記を連結すると

/usr/bin/php /usr/lib/cake/lib/Cake/Console/cake.php Post add -app /home/me/test

になります。

これで無事にデータが登録されたと思います。

Cronへの登録

あとはCronに登録するだけですね。

コンソールからcrontab -eを実行

Cronを登録

まとめ

Shellファイルの作り方とCronを実行するパスの書き方が解れば、そんなに難しくはないですね。
はじめパスの書き方が解らずに長い時間試行錯誤しました。
今回のテストファイルは簡単なものですが、コントローラーに作ったファイルを使ってアクションを実行することもできます。

人気記事一覧


関連記事一覧

This entry was posted in CakePHP and tagged , , . Bookmark the permalink.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">