EC-CUBE4でCron定期実行処理を実装する方法
EC-CUBE4では、Cronで定期実行するための処理も 簡単に実装することができます。 ベースのフレームワークであるSymfonyのCommandクラスを 拡張する形で実現します。
今回は例として、筆者が仕事で取り組んでいる海外用のサイトで使用する、 為替レートを取得するプログラムを紹介したいと思います。
app/Customize以下にCommandディレクトリを作り、 SymfonyのCommandクラスを継承したクラスを作成します。
<?php
namespace Customize\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;
class ExchangeUpdateCommand extends Command
{
// コマンド名を設定
protected static $defaultName = 'eccube:customize:exchange-update';
public function __construct()
{
parent::__construct();
}
protected function configure()
{
$this
->setDescription('為替レート取得コマンド')
->setHelp('為替レートを取得します。');
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$io = new SymfonyStyle($input, $output);
// ここに実際の処理を書きます
// 例えば外部APIから為替レートを取得してDBに格納する処理など
$io->success('為替レートの取得が完了しました。');
return 0;
}
}
後はCronなどで、以下のコマンドを叩いてあげればOKです。
php bin/console eccube:customize:exchange-update
今回は極力シンプルな形のものを紹介しましたが、 src/Eccube/Command 以下にも色々と参考にできる処理がありますので、 見てみてください。