Magento 2でプログラム的にCronジョブを作成する方法

magento cron job
magento cron job

Magento 2 Create Cron Jobは、Magento 2ストアを運営する際にとても便利な、時間に合わせた自動スケジュールの設定です。なぜこのような便利な機能があるのでしょうか?例えば、ウェブサイトの統計やコンテンツ管理システムのように、特定の時間に実行する必要のあるソフトウェアからの支援が必要ですが、もしかしたらあなたにはそれができないかもしれません。そのためには、ウェブサーバーにCronジョブを作成する必要があります。

理解しやすいチュートリアルをお探しですか?この記事はそんなあなたのためのものです。シンプルでわかりやすい手順をご紹介します。

CRONジョブとは?

Cronジョブは、ユーザーのための無料OSであるLinuxの優れた機能です。cronジョブは、あなたが行いたいタスクに適したコマンドやスクリプトを作成します。手動での作業の代わりに、cronジョブは正確な日時に自動的に実行することができます。自動化されているため、cronジョブは、毎日または毎週繰り返されるプロジェクトに最適な選択肢となります。

注意

Cronの設定はMagentoでは非常に重要で、インデックスの再作成、通貨レートの自動更新、Magentoのメールなど、多くのシステム活動のスケジュールを設定します。設定が正しく行われた場合のみ、cronジョブが有効になります。エラーが発生した場合、Magentoが期待通りに機能しないことを意味します。

なぜMagento 2にCron ジョブが必要なのか

Magento のいくつかの機能は、少なくとも 1 つの Cron ジョブを必要とします。これらの活動の一部を以下に示します:

  • カタログ価格規定
  • ニュースレター
  • Googleサイトマップの作成
  • 顧客へのアラート/通知(商品価格変更、商品の再入荷など
  • インデックスの再作成
  • プライベートセール(Magento Commerceのみ)
  • 通貨レートの自動更新
  • Magento の全メール(注文確認やトランザクションを含む

Magento 2 での Cron ジョブの作成方法

cronスケジュールを設定しながら、ガイドに従って思い通りにcronジョブプログラムを起動してください:

  • Cron」フォルダ内にクラスを作成します。
  • PHPを使って手動でcronのスケジュールを設定する: bin/magento cron:run
  • cronjobが実行された後、var/log/system.logにログを見つけます。
  • Magento 2の管理画面にログインして、以下のパスを実行します。Stores > Configuration > Advanced > System の順に行い、cron グループごとにスケジューラーの設定を変更します。
  • 最後に、コマンドラインからcronを実行します。

magento cron:run [–group=””]

crontab.xmlの作成

ファイル:app/code/SmartOSC/HelloWorld/etc/crontab.xml

内容は

<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
	<group id="default">
		<job instance="SmartOSC\HelloWorld\Cron\Test" method="execute" name="SmartOSC_helloworld_cron">
			<schedule>* * * * *</schedule>
		</job>
	</group>
</config>
  • group idは、cronのグループ名です。一度に実行できるのは、1つのグループのcronだけです。
  • job instanceはインスタンス化されるクラスです(クラスパス)。
  • job method は、呼び出すジョブインスタンスのメソッドです。
  • job nameは、このcronジョブのユニークIDです。
  • schedule は cron 形式のスケジュールです。以下のグラフは、その構成を示しています。
* * * * * command to be executed
| | | | |
| | | | +----- Day of week (0 - 7) (Sunday=0 or 7)
| | | +------- Month (1 - 12)
| | +--------- Day of month (1 - 31)
| +----------- Hour (0 - 23)
+------------- Minute (0 - 59)

crontab.xmlでは、Smartosc\HelloWorld\Cron\Testというジョブインスタンスを定義しています。これで作成されるはずです。

Test.phpの作成

ファイル:app/code/SmartOSC/HelloWorld/Cron/Test.php

<?php

namespace SmartOSC\HelloWorld\Cron;

class Test
{

	public function execute()
	{

		$writer = new \Zend\Log\Writer\Stream(BP . '/var/log/cron.log');
		$logger = new \Zend\Log\Logger();
		$logger->addWriter($writer);
		$logger->info(__METHOD__);

		return $this;

	}
}

キャッシュをフラッシュして、コマンドラインから magento cron:run –group=”default” を実行してください。

Cron が正常に動作しているかどうかを確認するには、ストアの var/log/cron.log に SmartOSCHelloWorld\Cron\Test::execute というテキストが表示されていることを確認してください。

デモを申し込む

弊社の専門家は最適なソリューションをサポートさせて頂きます。

►►►サービスについて