Blog スタッフブログ

EC-CUBE システム開発

[EC-CUBE]EC-CUBE4のCron処理の設定方法

システム開発担当のTFです。

※EC-CUBE4系統対応

やり方

  • Command を継承した実行したい処理を記述したファイルを 「app\Customize\Command」内に作成する
  • キャッシュを削除する
  • 作成したファイルの defaultName を 「bin/console」 で実行する
  • それを、Cronで定期実行の設定を行う

サンプル

<?php

namespace Customize\Command;

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;

use Eccube\Repository\CustomerRepository;
use Doctrine\ORM\EntityManagerInterface;

// Commandを継承したCron処理を行いたいクラス
class TestCommand extends Command
{
	// bin/console で実行する名前
	protected static $defaultName = 'eccube:customize:test';
	
	// 依存性注入( 処理で必要な物を設定する )
	public function __construct(
		CustomerRepository $customerRepository,
		EntityManagerInterface $entityManager
		
    ) {
		$this->customerRepository = $customerRepository;
		$this->entityManager = $entityManager;
		
		parent::__construct();
    }
	
	// 実行処理
	protected function execute(InputInterface $input, OutputInterface $output)
    {
		// cronで実行したい処理を記述する
    }
}
// 作成した処理の実行( defaultNameを指定する )
php bin/console eccube:customize:test
# cronの定期実行設定 * は毎回 必要な頻度や時間でセットする
# 分 時 日 月 曜日 コマンド(
#						cdでbinへ移動
#						phpのパスは環境で変わる為要確認
#						上記 処理の実行
#						1> /dev/null は 標準出力を破棄する
#						)
* * * * * cd eccubeのパス/bin/; /usr/local/bin/php console eccube:customize:test 1> /dev/null