2012年4月9日

Yii Framework: さくらインターネットでcronを設定する

さくらインターネットを使って、
Yii のコンソールコマンドを cron で実行するテストをしてみました。

全体的な流れ

  1. データベースを作成
  2. config/main.php と console.php の設定
  3. Gii でモデルを作成
  4. コンソールコマンドの作成
  5. ローカルでのコンソールコマンドのテスト
  6. さくらインターネットの cron の設定
  7. さくらインターネットサーバでのコンソールコマンドのテスト

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 するものを作ります。
5. ローカルでのコンソールコマンドのテスト
コンソールで 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 程度あとの分に設定してやると良いかもしれません。

諸々の設定ができたら 送信 をクリックして、設定した分まで待ちます。設定した分にきたら、サーバのデータベースを確認して、データが insert されていれば成功です (終わったらテスト用の CRON とデータベースの削除を忘れずに) 。

参考リンク

0 件のコメント:

コメントを投稿