回答:
cron.shを実行することをお勧めします
Magento EE 1.13.xおよびCE 1.8.xの時点で、Magentoが新しいスケジューリングモード機能を導入したところで、cronの仕組みが変更されました。
2つの使用可能なモードがあります。1.デフォルト-スケジュールされたcronを実行します。2. always-名前が示すように、これらのタスクはcronがトリガーされるたびに無条件に実行され、明示的に定義されたスケジュールを必要としません。
基本的に、パラメーターなしで呼び出されるcron.phpは、shell_execを使用してcron.shの2つのプロセスを実行します。それぞれに異なるパラメーター(「デフォルト」または「常に」)があります。Cron.shはこのパラメーターをcron.phpに渡し、cron.phpはcronを実行します。内部的には、Magentoはイベントインフラストラクチャを使用して、「default」および「always」という名前のイベントをディスパッチすることで2つのモードを処理します。Mage_Cronは、2つのオブザーバーメソッドを実装します。
cron.phpを見ると、PHP関数shell_execの使用に気づくでしょう。セキュリティ上の懸念とは別に、関数はエラーが発生したとき、またはプログラムが出力を生成しないときの両方でNULLを返すことができます。この関数を使用して実行エラーを検出することはできません。これは、エラーのためにスクリプト/コードが失敗する任意の時点で、次のことが起こることを意味します。1. cronjobが古くなる、2。エラーが記録されない、3。これが発生したことを誰も知らない。
これを克服するには、次のcronjobを追加する必要があります。
*/5 * * * * www-data /bin/sh /path/to/magento/cron.sh cron.php -m=default
*/5 * * * * www-data /bin/sh /path/to/magento/cron.sh cron.php -m=always
これにより、フォールバックPHP関数shell_execを使用せずにプロセスモードが常に実行され、エラーが発生した場合に例外がスローされるため、cronが古くなることはありません。
*/5 * * * * www-data /bin/sh /path/to/magento/cron.sh cron.php -m=default */5 * * * * www-data /bin/sh /path/to/magento/cron.sh cron.php -m=always
また、これらのコマンドは、nupur waliaによる「コマンドが見つかりません」というエラーを表示します
*/5 * * * * /bin/sh /path/to/magento/cron.sh cron.php -m=default
www-data
ユーザーがWebサーバープロセスを実行するものに変更されます。また、多くのCPanel / WHMホスティング設定でshell_exec()
は、無効化されることに注意する価値があります。