エックスサーバーでのCRON設定

エックスサーバーで、CRM分析プラグインの集計用CRONを設定する手順です。

サーバーパネルから2本のスケジュールを登録します。

前提条件

  • エックスサーバーのサーバーパネルにログインできること
  • EC-CUBEとCRM分析プラグインがインストール済みであること
  • EC-CUBEの設置ディレクトリ(パス)が分かること(例: /home/サーバーID/ドメイン名/public_html/ec-cube
  • CRONで使うPHPのバージョンが決まっていること(サーバーパネルの「PHP Ver.切替」で設定しているWebのPHPと、同じバージョンを推奨します)

推奨スケジュール

CRM分析プラグインでは、レンタルサーバーでも安定して運用できる5分おきを推奨しています。

用途推奨コマンド
集計ワーカー5分おきeccube:crm-analytics42:worker
日次登録毎日 3:00eccube:crm-analytics42:enqueue-daily

管理画面から集計を開始するとキューに登録され、次回のワーカー実行で処理が始まります。5分おきなら、開始までの待ちは最大で約5分です。

設定手順

  1. サーバーパネルにログインする
  2. 「サーバー」>「Cron設定」を開く
  3. 「Cron設定を追加」をクリックする
  4. 後述の「時刻」と「コマンド」を入力する
  5. 「追加する」をクリックする
  6. 日次登録用も同様にもう1件追加する

PHPのコマンドパスを確認する

エックスサーバーのCRONでは、PHPのコマンドパスをコマンドの中に書きます。

  • コマンドパスは /opt/php-バージョン/bin/php の形式です(例: PHP 8.3 の場合は /opt/php-8.3/bin/php
  • 使えるバージョンは、CRM分析プラグインが対応する 7.4 / 8.0 / 8.1 / 8.2 / 8.3 です
  • Webで使うPHP(サーバーパネルの「PHP Ver.切替」)と、CRONで使うPHPは別々に決まります。CRONでは、コマンドパスの数字でバージョンを指定します
  • コマンドパスのバージョンは、EC-CUBEが対応するバージョンに合わせてください(動作環境・対応バージョン を参照)
  • サーバーパネルの「サーバー情報」→「コマンドパス一覧」にも、PHPのコマンドパスが載っています

入力内容

エックスサーバーのサーバーパネルでは、時刻(分・時間・日・月・曜日)とコマンドを分けて入力します。ダッシュボードの初期セットアップに表示される1行(先頭に */5 * * * * などが付いた行)をそのまま貼り付けず、次のように分けてください。コマンドの末尾には > /dev/null 2>&1 を付け足します(理由は後述の「実行結果のメールについて」)。コマンドの表示方法は、初期セットアップ を参照してください。

1. 集計ワーカー(5分おき)

コマンド(1行):

cd /home/サーバーID/ドメイン名/public_html/ec-cube && /opt/php-8.3/bin/php bin/console --no-debug eccube:crm-analytics42:worker > /dev/null 2>&1

時刻:

時間曜日
*/5****

2. 日次登録(毎日 3:00)

コマンド(1行):

cd /home/サーバーID/ドメイン名/public_html/ec-cube && /opt/php-8.3/bin/php bin/console --no-debug eccube:crm-analytics42:enqueue-daily > /dev/null 2>&1

時刻:

時間曜日
03***

パスの置き換え

  • /home/サーバーID/ドメイン名/public_html/ec-cube は、実際のEC-CUBE設置ディレクトリに置き換えてください
  • ダッシュボードの初期セットアップに表示されるパスを使うと確実です
  • /opt/php-8.3/bin/php は、使うPHPバージョンのコマンドパスに置き換えてください

実行結果のメールについて

コマンドの末尾の > /dev/null 2>&1 は、実行結果を捨てる指定です。5分おきに動くため、付けないと実行のたびに結果が通知されます。

  • 「Cron結果の通知アドレス」を設定している場合は、実行のたびに通知メールが届きます
  • 通知アドレスを設定していない場合は、ホームディレクトリ直下の「Maildir」フォルダに結果が保存され続けます

設定後の確認

  1. ダッシュボードの初期セットアップで、ワーカー側に「動作を確認しました」と出るか見る(登録から最大5分ほどかかります)
  2. 初期セットアップの「上記2つの登録が完了したらチェックしてください。」にチェックを入れる
  3. 管理画面から短い期間で集計を開始し、「定期実行の開始待ち」から実行中へ進むことを確認する

うまくいかないとき

  • コマンドの設置パスやPHPのコマンドパスが違うと、コマンドが動きません。SSHが使える場合は、時刻と > /dev/null 2>&1 を除いた部分を、そのまま手動実行して確認できます
  • PHPのバージョンがEC-CUBEの対応範囲(7.4〜8.3)外だと、分かりにくいエラーになることがあります。コマンドパスのバージョンを確認してください
  • ダッシュボードに「CRON(定期実行)が動いていない可能性があります」と表示された場合や、解決しない場合は、初期セットアップ の「うまく動かないときは」を参照してください
  • 原因を調べるときは、コマンド末尾の > /dev/null 2>&1 をいったん外し、「Cron結果の通知アドレス」にメールアドレスを設定して、実行結果を確認してください。確認が終わったら、元に戻してください
  • --no-debug が付いていないと、長時間集計でメモリ不足になることがあります
  • 詳細は 集計されない も参照してください

関連ページ

CRM分析プラグイン

EC-CUBEの会員・受注データを分析し、リピート率や休眠顧客の把握、AIによる改善提案まで行えるプラグインです。