shimizu

This user hasn't shared any biographical information


Posts by shimizu

コンソールアプリケーション Yii Framework触るぜ日記(6)

シェルからコマンド打ってガー!
というヤツです。
cronから動かしたりメール受信した際に処理させたりと意外と使う。
今回はコレをYiiでやってみるテストです。

参考にしたのはモチロン(?)choco & moca Yiiのcron jobの作成法公式です。
今回は公式の方のタイプでやってみましたよ。

流れ

protected/直下にエントリースクリプトを置く。
protected/commands/直下にコマンドクラスを置く。
シェルからGO!!
という流れになります。

エントリースクリプト

まぁ、下記の内容でいいっす。

<?php
defined('YII_DEBUG') or define('YII_DEBUG',true);

require_once('/path/to/framework/yii.php');
$config = dirname(__FILE__).'/config/main.php';

Yii::createConsoleApplication($config)->run();

これを適当な名前でprotected直下においてくださいな。
とりあえず今回はcui.phpとして保存しました。

コマンドクラス

CConsoleCommandを継承したコマンドクラスを用意します。
このコマンドクラスをprotected/commands/の下に置く。
クラス名にCommand付けないとアレです。

<?php
class sampleCommand extends CConsoleCommand
{
	public function run( $args )
	{
		echo('sample'."\n");
	}
}

これをprotected/commands/sampleCommand.phpとして保存。
ファイル名にもCommandが必要です。

シェルからGO!

あとはシェルから入れればOKです

php ./protected/cui.php sample

これでsampleって表示されるよ!

おまけ

main.phpに設定するとCommand付けるとかいう気持ち悪さ(?)から開放されます。
protected/config/main.phpに設定を追加。

	'commandMap'=>array(
		'sample'=>'application.commands.sample'
	),

これでクラス名やファイル名にsampleってつけなくてよくなりますよ。
クラスファイルを設置するディレクトリも自由になります。

まぁ、Commandつける方が早いけどね!!!
追記:3/11 嘘です。
commandMapを設定すると通常のwebアプリの方で「commandMapなんて設定されてねーよ」エラーが出ます。
設定するなら、エントリースクリプト(この例だとcui.php)の方で$config['commandMap'] = array(‘コマンド’);って指定する必要がありますね。
ゴメンちょ(´・ω・`)

日本人の知らない日本語

面白かったので紹介。

外国人の方達に日本語教えてる人の本です。
字のみのページも多々あるけど、基本マンガです。

こーゆーカルチャーギャップ的なの好きです!!

あと、確か『「お召し上がりください」は二重敬語で間違いた!』ってあったけど
文化審議会答申の「敬語の指針」によれば習慣として定着している言い方って事でOKっぽいです。
上の指針とかも見てると面白い(?)ですよ。
「お読みになる」「お読みになっておられる」はOKで「お読みになられる」アウト!
「伺っていただく」 -> 相手かコッチかどっちを立てとんねん!
とかも「へ~」ってなった。

しっかし、メールの時とかに「とりあえず”お・ご”つけたり”お願い致します”って書いとけばいいや!」ってやってたけどアレですね(><)
反省した。
プログラムだけでなく日本語も勉強しようと思いました(・∀・)まる!