Yii のコンソールコマンドを cron で実行するテストをしてみました。
全体的な流れ
- データベースを作成
- config/main.php と console.php の設定
- Gii でモデルを作成
- コンソールコマンドの作成
- ローカルでのコンソールコマンドのテスト
- さくらインターネットの cron の設定
- さくらインターネットサーバでのコンソールコマンドのテスト
1. データベースを作成
テスト用に test というデータベースを作成し、hoge というテーブルを作成します。カラムは以下。`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 32 ) NOT NULL
2.config/main.php と console.php の設定
Gii モジュール部分とデータベースの設定を行います。コンソールコマンドでモデルを使用しますので、main.php の import 部分をそのまま console.php にもコピペします。3. Gii でモデルを作成
hoge テーブルのモデル Hoge を作成します。4. コンソールコマンドの作成
/protected/commands 下に TestCommand.php を作成。とりあえずテストなので、このコンソールコマンドを実行すると、データを insert するものを作ります。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class TestCommand extends CConsoleCommand | |
{ | |
public function run() | |
{ | |
$c = new CDbCriteria(); | |
$model = new Hoge(); | |
$model->name = 'test' . $model->count($c); | |
$model->save(false); | |
} | |
} |
コンソールで protected まで移動して yiic と入力して Enter。test という項目があれば使える状態なので yiic test と入力して Enter。エラー等がなければ成功したということなので、データベースを見に行って、データが insert されているか確認します。
確認後、諸々のファイルをプロダクションモードに設定後、サーバにアップロード ( index.php、yiic.php, main.php, console.phpなど) 。また、サーバのデータベーステーブルの追加も行います。
6. さくらインターネットの cron の設定
さくらインターネットサーバコントロールパネルに移動します。左側のメニューからアプリケーションの設定を探して CRONの設定 リンクをクリック。続いて、CRON 設定一覧の 新規項目の追加 リンクをクリック。
実行コマンドに cd /home/ユーザ名/www/protected/ ; /usr/local/bin/php yiic コマンド名 を追加。例えば、ユーザ名が yiiuser の場合で、今回作った TestCommand.php を実行させたい場合は以下を追加します。
cd /home/yiiuser/www/protected/ ; /usr/local/bin/php yiic test
実行日時等は説明を読んでください。とりあえずテストしたい場合は、月日時をアスタリスクにして、分のみ、現在の分から1,2 程度あとの分に設定してやると良いかもしれません。
0 件のコメント:
コメントを投稿