Drupal 7を使用しており、cronジョブを1時間ごとに実行するように設定しています。
ただし、drupal cronを実行すると、CiviCrmスケジュールジョブが実行されません。これらのスケジュールジョブは、[すべてのスケジュールされたジョブを手動で実行する]リンクをクリックしたときにのみ実行されます。
drupal cronジョブがCiviCrmスケジュールジョブを実行するように構成する方法はありますか?
または、追加のモジュールをインストールするか、CiviCrmスケジュールジョブが自動的に実行されるように設定を構成する必要がありますか?
サーバーでCiviCRMの個別のcronエントリを構成する必要があります。 CiviCRMの スケジュールされたジョブの管理 は、ここにあるリファレンスドキュメントです。
ベストプラクティスは、CiviCRM cronを個別に実行することです。
DrupalでCiviCRMのcronを実行することは可能ですが(例 CiviCRM Cron または Elysia Cron モジュール))、私はお勧めしませんそのアプローチ。
CiviCRM cronをデバッグする際の確認事項-
templates_c/
_ディレクトリへの書き込みアクセス権を持っている可能性があり、そこに書き込むことができないユーザーとして呼び出されると失敗する可能性があります。civicrm/admin/job?reset=1
_にアクセスし、その他>今すぐ実行をクリックしますsu
を使用して、これを実行するときと同じようにWebサーバーが実行するユーザーアカウントを想定します。DrupalをCiviCRMで広範囲に使用しているため、ほとんどのサイトのcronを使用して
_drush -u 1 @example.org civicrm-api job.execute auth=0 --out=json
_
ここで、@ example.orgは、問題のサイトに設定されたエイリアスです。
CiviCRM cronを頻繁に呼び出し(サイトの最大待機時間は数分)、待機時間を減らし、キューの増加を回避します。
サイトのcronエントリmightは、次のようになります_/etc/cron.d/civicrm
_
_[email protected]
*/7 * * * * www-data drush -u 1 @example.org civicrm-api job.execute auth=0 --out=json
_
...しかし、これを環境に合わせて調整する必要があります。特定のタスクを頻繁に呼び出し、他のタスクを週に1回呼び出すこともできます。上記のユーザー、Drushエイリアス、Drushへのパスを確認する必要があります。
また、分析のためにcron出力をsyslogにルーティングしますが、これはこれの範囲外です。 CiviCRM cronは、他のDrushコマンドとは異なり、Drush出力ステータス(drush_log()
の_$type
_パラメータ)を設定しません。
サーバーのcronジョブ構成から直接スケジュールされたジョブのCiviCRMのcronを起動することをお勧めします。
手動:
スケジュールされたジョブ :これらのジョブは、Webホスティングサーバーで定期的に実行されるcronによってトリガーされる必要があります。
Wiki:
スケジュールされたジョブの管理 :ただし、ほとんどのサイトでは、サーバーのコマンドラインから必要なジョブを実行するのが最適です。多くの場合、1つ以上の自動的にスケジュールされた「cron」ジョブとして実行します。
ただし、Drupalのcronに結び付けることを目的としたモジュールがあります。 CiviCRM Cron 。私はそれを使用していませんが、特にサーバーレベルでcronを設定できない場合、それはあなたが求めているもののように見えます。
Drupalのcronを使用してCiviCRMのcronを呼び出します。 CiviCRMのcronは、コマンドラインから直接呼び出すことができます(呼び出す必要があります)が、これは、CiviCRMのcronを構成することが不可能または不都合な場合に、CiviCRMのURLで使用されるユーザー、パス、およびサイトキーを定義し、CiviCRMのcronを呼び出す簡単な方法です。
Elysia Cron モジュールを試してみてください。
これにより、どのcronジョブをいつ実行するかをより詳細に制御できます。 cronジョブがすべてのジョブを完了する前にタイムアウトになる可能性があります。このモジュールを使用して、Civicrm cronジョブを他のcronジョブとは異なる時間に実行するように構成できます。