<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>しみ備忘録 &#187; 未分類</title>
	<atom:link href="http://labo.shimi-zoo.com/post/category/%e6%9c%aa%e5%88%86%e9%a1%9e/feed" rel="self" type="application/rss+xml" />
	<link>http://labo.shimi-zoo.com</link>
	<description>酔っぱらいスクリプターの備忘録。よく消える（意味ねぇ</description>
	<lastBuildDate>Tue, 11 May 2010 19:04:03 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>コンソールアプリケーション Yii Framework触るぜ日記(6)</title>
		<link>http://labo.shimi-zoo.com/post/40</link>
		<comments>http://labo.shimi-zoo.com/post/40#comments</comments>
		<pubDate>Tue, 09 Mar 2010 08:54:53 +0000</pubDate>
		<dc:creator>shimizu</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://labo.shimi-zoo.com/?p=40</guid>
		<description><![CDATA[シェルからコマンド打ってガー！
というヤツです。
cronから動かしたりメール受信した際に処理させたりと意外と使う。
今回はコレをYiiでやってみるテストです。
参考にしたのはモチロン(?)choco &#038; mo]]></description>
			<content:encoded><![CDATA[<p>シェルからコマンド打ってガー！<br />
というヤツです。<br />
cronから動かしたりメール受信した際に処理させたりと意外と使う。<br />
今回はコレをYiiでやってみるテストです。</p>
<p>参考にしたのはモチロン(?)<a href="http://chocomoca9.blog40.fc2.com/blog-entry-38.html" target="_blank">choco &#038; moca  Yiiのcron jobの作成法</a>と<a href="http://www.yiiframework.com/doc/guide/ja/topics.console" target="_blank">公式</a>です。<br />
今回は公式の方のタイプでやってみましたよ。</p>
<h3 class="title"><span>流れ</span></h3>
<p>protected/直下にエントリースクリプトを置く。<br />
protected/commands/直下にコマンドクラスを置く。<br />
シェルからGO！！<br />
という流れになります。</p>
<h3 class="title"><span>エントリースクリプト</span></h3>
<p>まぁ、下記の内容でいいっす。</p>
<pre class="brush: php;">
&lt;?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)-&gt;run();
</pre>
<p>これを適当な名前でprotected直下においてくださいな。<br />
とりあえず今回はcui.phpとして保存しました。</p>
<h3 class="title"><span>コマンドクラス</span></h3>
<p>CConsoleCommandを継承したコマンドクラスを用意します。<br />
このコマンドクラスをprotected/commands/の下に置く。<br />
クラス名にCommand付けないとアレです。</p>
<pre class="brush: php;">
&lt;?php
class sampleCommand extends CConsoleCommand
{
	public function run( $args )
	{
		echo('sample'.&quot;\n&quot;);
	}
}
</pre>
<p>これをprotected/commands/sampleCommand.phpとして保存。<br />
ファイル名にもCommandが必要です。</p>
<h3 class="title"><span>シェルからGO!</span></h3>
<p>あとはシェルから入れればOKです</p>
<pre class="brush: plain;">
php ./protected/cui.php sample
</pre>
<p>これでsampleって表示されるよ！</p>
<h3 class="title"><span>おまけ</span></h3>
<p><del datetime="2010-03-11T07:37:17+00:00">main.phpに設定するとCommand付けるとかいう気持ち悪さ(?)から開放されます。<br />
protected/config/main.phpに設定を追加。</p>
<pre class="brush: php;">
	'commandMap'=&gt;array(
		'sample'=&gt;'application.commands.sample'
	),
</pre>
<p>これでクラス名やファイル名にsampleってつけなくてよくなりますよ。<br />
クラスファイルを設置するディレクトリも自由になります。</p>
<p>まぁ、Commandつける方が早いけどね！！！</del><br />
<strong>追記：3/11　嘘です。</strong><br />
commandMapを設定すると通常のwebアプリの方で「commandMapなんて設定されてねーよ」エラーが出ます。<br />
設定するなら、エントリースクリプト（この例だとcui.php）の方で$config['commandMap'] = array(&#8216;コマンド&#8217;);って指定する必要がありますね。<br />
ゴメンちょ(´・ω・`)</p>
]]></content:encoded>
			<wfw:commentRss>http://labo.shimi-zoo.com/post/40/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
