cakePHP2でコマンド実行

cronで実行したかったのでcakePHP2でのシェル実行の仕方を調べました。

class MyShell extends Shell{
のようにShellを継承して作成出来るようです。
いくつもバッチを作成して共通化させたい場合はapp/Console/Command/AppShell.phpを作成せよとのことです。
バッチに使用するファイルは
app/Console/Command/MyShell.php
とCommandに配置します。
このバッチでコンポーネントを使用したかったのですがなかなか回答に辿りつきませんでした。
$component = array()とかは使えないようで、startup()を使用してインスタンス化させらます。
</span></pre>
<pre></pre>
&lt;?php
App::uses('ComponentCollection','Controller');
App::uses('JsonApiComponent','Controller/Component');
<pre></pre>
//共通化がいるならAppShellを作成する
class EvaShell extends Shell {
<pre></pre>
public function startup() {
$collection = new ComponentCollection();
$this-&gt;JsonApi = new JsonApiComponent($collection);
parent::startup();
}
public function main() {

$this-&gt;out("test");
$data = $this-&gt;JsonApi-&gt;getData();
}
}
<pre><span style="font-family:monospace;">

色々試した結果、ここに行き着きました。
裏付けはありませんw

/app/Console/Command/MyShell.php
で実行できます。
http://book.cakephp.org/2.0/en/console-and-shells.html

Published by

kashioka

有限会社アリウープ 代表取締役社長 PHPユーザ会の発起人の一人。いちばんやさしいPHPの教本(インプレス),PHPハンドブック(ソフトバンククリエイティブ)著者。PHPカンファレンス実行委員 明日の開発カンファレンス開催 認定スクラムマスター。近年、PHPに限らずサーバレス環境でのPythonなども書いたりしている。 http://alleyoop.jp

%d人のブロガーが「いいね」をつけました。