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> <?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->JsonApi = new JsonApiComponent($collection); parent::startup(); } public function main() { $this->out("test"); $data = $this->JsonApi->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