CakePHP バッチ処理
バッチ処理の機能
CakePHP3の機能をフルに使える。
DBの取得、ログ出力、例外、固定値ファイル等
CakePHP4〜はシェルは非推奨。→コマンドへ
バッチ実装方法
※TestShell.php
namespace App\Shell;
use Cake\Console\Shell;
use Cake\Log\Log;
use Cake\Controller\Component;
use Cake\Controller\ComponentRegistry;
use App\Controller\Component\TESTComponent;
「Shell」を継承
class TESTShell extends Shell {
public function initialize() {
コンポーネントを参照(コンポーネントを利用する場合)
$this->TEST = new TESTComponent(new ComponentRegistry());
}
シェルではmainメソッドが自動実行される
public function main() {
TESTComponent内のメソッドを実行
$this->TEST->check();
}
}
cake bake command コマンド名
例 cake bake command TestCommand
TestCommand.php
class TestCommand extends Command
{
public function buildOptionParser(ConsoleOptionParser $parser): ConsoleOptionParser
{
$parser = parent::buildOptionParser($parser);
return $parser;
}
public function execute(Arguments $args, ConsoleIo $io)
{
$io–>out(‘CakePHP4’);
}
}
ファイル構成
└cake.php
└logs
└cli-debug.log
└cli-error.log
↑画面ログとは別にシェルログが出力される
└src
└Controller
└Component
└TESTComponent.php
└Shell
└TestShell.php
↑末尾に「Shell」を付ける
└src
└Controller
└〜
└Shell
└〜
└Command
└〜TestCommand.php