Xserverのcronで毎分と毎時の設定でつまづかないためのポイント

スポンサードサーチ

現代のビジネスにおいて、B2C(企業対消費者)であれ、B2B(企業間取引)であれ、ECサイトは単なる「インターネット上の店舗」という枠組みを超え、企業の売上を左右する極めて重要な中核インフラとして定着しています。

市場が成熟し、消費者の期待値がかつてないほど高まっている中で、企業に求められるECシステムの要件は日々高度化し、複雑さを増しています。

しかし、ECサイトの構築やリニューアルのプロジェクトにおいて、多くの経営者や事業責任者の目は、表面上の美しいフロントエンドのデザインや、ユーザーが直接触れるUI(ユーザーインターフェース)およびUX(ユーザーエクスペリエンス)の改善に向きがちです。

もちろん、これらが顧客の購買意欲を刺激し、コンバージョン率を高める上で重要な要素であることは間違いありません。

しかし、ECサイトが真にその価値を発揮し、長期的なビジネスの成功を牽引するためには、システムの裏側で人知れず動くバックエンド処理、特に定期的かつ自動的に実行されるバッチ処理が、正確かつ極めて安定して稼働していることが絶対条件となります。

そこで、今回はレンタルサーバー国内シェアNo.1であり、CS-Cart国際版(公式)も動作をするXserverのcronの設定でつまづきやすいポイントについて見てみましょう。

システムの裏側で動くcron(クロン)とは?

基幹システム(ERP)と連携した在庫データのリアルタイム同期、数万点に及ぶ商品データの夜間一括更新、注文ステータスの自動遷移に伴うお客様への通知メールの配信、あるいは万が一のシステム障害に備えたデータベースの定期的なバックアップなどは、すべてシステムの裏側で自動的に行われています。

そして、これらの自動処理を根底で支え、スケジュール通りに正確にプログラムを実行するための仕組みが、cron(クロン)と呼ばれるジョブを実行するスケジューラーです。

cron(クロン)は、指定した日時や定期的なスケジュール(分、時、日、月、曜日の単位)で、コマンドやスクリプトを自動的にバックグラウンドで実行をしてくれます。

そのため、cron(クロン)は、主にバックアップやログのローテーション、システムの定期メンテナンス、定期メール送信などに活用されています。 

このcron(クロン)は、LinuxやmacOSなどのUnix系OSにおいて用意されておりますので、Amazonが提供するクラウドコンピューティングサービスのAWS(Amazon Web Services)や、Googleが提供するクラウドコンピューティングサービスのGCP(Google Cloud Platform)などでも使えます。

また、今回取り上げるXserverにおいても、管理画面の方からcron(クロン)の設定が行えるようになっています。

cron(クロン)が動かないとはどんな状態?

ただし、このcron(クロン)の設定をしたものの、動かないという場合があります。

具体的には、次のような状態でしょう。

症状内容発生してる状況
設定した時刻に動かないスクリプトが時間通りに動かない日時設定を間違えている
サーバの時刻設定とプログラムの時刻設定が異なる
メールが届かない定期送信が機能しないスクリプトは実行されているが途中でエラーになっている
バックアップが更新されない新しいファイルが生成されない処理が途中で止まっている
処理は完了しているのに反映されない見た目は変わらない実行はされているが出力先が間違えている

発生している状況を見ていただくとわかるように、cron(クロン)が動いてないのではなく、動作はしています。

しかし、期待した結果になっていない場合に「cron(クロン)が動かない」と言っている場合が殆どです。

そのため、「cron(クロン)が動かない」という場合には、単純なパス指定ミスや権限設定の不備で止まっていたケースも多いので、まずは設定が正しいのかを確認することが重要です。

Linuxのcron(クロン)設定

Xserverのcron(クロン)設定の前に、Linuxのcron(クロン)設定の方法について見てみましょう。

Linuxのcronジョブの設定は、設定ファイルの /etc/crontab で以下の書式で記述します。

minute   hour   day   month   day of week   user   command

例えば、9時~11時の0分,30分に home/sample/public_html/notify.php を実行する場合には、以下のように記述します。

00,30 9-11 * * * php home/sample/public_html/notify.php

一日中、10分毎に home/sample/public_html/notify.php を実行する場合には、以下のように記述します。

*/10 * * * * php home/sample/public_html/notify.php

ここでのポイントは、入力できるのは数字だけでは無い、という点です。

  • アスタリスク (/*)
    • 全ての有効な値を指定できます。例えば、dayにアスタリスク (*) を指定すると、毎日実行されます。
  • ハイフン (-)
    • 整数の範囲を指定できます。例えば、1-3は整数 1、2、3を指します。
  • カンマ (,)
    • カンマ (,) で区切られた値は、一覧を指定します。例えば、「1, 3, 4」はそれら3つの値の整数を指します。
  • スラッシュ (/)
    • スラッシュ (/)でステップ値を指定できます。範囲の後に「/」を付けると、その範囲内で指定した整数の値をスキップできます。例えば、minuteで「0-59/5」 と指定すると、0〜59分の間で5分ごとに実行できます。

Xserverでのcron(クロン)設定

一方、Xserverでは、専用のサーバーパネルから、「サーバ > Cron設定」に進んで入力をします。

毎時、毎日、毎週、毎月、毎年、というタブが用意されていますので、分、時、日、月、曜日を数字や記号で指定します。

ここで非常に多く見受けられるのが、設定したはずの時刻(間隔)でプログラムが動かない、というトラブルです。

特に陥りやすいのが、〇分ごとに処理を実行させたい場合の記述ミスです。

「*/5」と「5」の決定的な違い

Xserverの「Cron設定」のマニュアルには、「毎日 PM10:00 に A というプログラムを実行したい場合」の例しかありません。

しかし、Xserverでも先ほどのLinuxのcron(クロン)設定と同じ書式が使えます。

例えば、5分ごとに在庫データを同期するプログラムを動かしたい場合、この時、分の項目にどのように記述するかで動作が変わります。

  • 誤った設定:「5」と記述する
    • この場合、「毎時5分」にのみ実行されます。(例:10:05、11:05、12:05…)
    • つまり、1時間に1回しか処理が走らないことになります。
  • 正しい設定:「*/5」と記述する
    • 「*」は「すべて」を意味し、「/5」と組み合わせることで「5で割り切れる分」=「5分ごと」という意味になります。
    • これにより、0分、5分、10分、15分…と、意図した通り5分間隔で処理が実行されます。

通知メールアドレスの設定で動作を確認する

Xserverでは、Cron結果の通知アドレスの設定が用意されています。

そのため、cron(クロン)の設定をした場合には、Cron結果の通知アドレスで動作検証をして、時間通りに想定したプログラムが動いてるのかを検証することも重要です。

小さなミスがビジネスに影響する場合もある

5分ごとに動いている、と思い込んでいる処理が、実は1時間に1回しか動いていなかったという場合、ビジネスに影響が出る場合もあります。

  • 在庫の売り越し(欠品)リスク:他チャネルで売れた在庫がECサイトに反映されるまでに最大1時間のタイムラグが生じ、在庫がないのに注文を受けてしまうトラブルに発展する可能性があります。
  • 通知の遅延:お客様への注文確認メールや発送通知が遅れ、不信感を抱かせる原因となる可能性があります。

このように、たった1文字の記号の抜けが、顧客体験の低下やブランドへの信頼失墜という大きなビジネスリスクに直結してしまう可能性もありますので、設定一つでも非常に慎重に行う必要があります。

今回、Cronの「*/5」と「5」の違いという、一見すると些細な技術的トピックも、紐解いていけば、お客様に正しい在庫状況を伝える、機会損失を防ぐ、というビジネスの根幹に繋がっています。

システム構築において重要なのは、単に要望された機能を実装することではありません。

その機能がビジネスのゴールにどう貢献するのか、を問い続けることです。

私たち株式会社リソース・シェアリングは、コンサルティングから要求定義、要件定義、設計、開発、運用、解析までワンストップで提供することで、皆様のビジネスの成功を共に目指すパートナーでありたいと考えています。

独自性のあるビジネスモデルを実現したい、あるいは運用フェーズでの課題をシステムで解決したいとお考えの際は、ぜひ一度ご相談ください。

貴社の要求を深く理解し、最適な解決策をご提案いたします。

ITを使った経営課題の解決でお困りではありませんか?

DXを始めとするITを使った経営課題の解決が上手くいっていない企業は数多くあります。

それは、単なるソリューションの導入や、社内人材への丸投げとなっており、課題解決がゴールになっていないからです。

そのためには、経営とITを理解した人材が、経営者層と共に取り組み、経営者の頭の中を可視化することが必須要件です。

現在、1時間の無料オンライン・コンサルティングを実施しております。

是非この機会にご相談ください。

構築予算が10分の1に

経営課題を解決するECサイト、越境ECサイト、BtoB ECサイト、マーケットプレイスを構築するならCS-Cartをご検討ください。

スポンサードサーチ