web-dev-qa-db-ja.com

サイトの訪問者がcronタスクをトリガーしないようにするにはどうすればよいですか?

私のサイトのログは、誰かがウェブサイトにアクセスするとcronがトリガーされることを示しています。これにより、最初の訪問の読み込み時間が遅くなります。

Cronは、ここで3時間ごとに実行されるように構成されています:アドミニストレーション"構成"システム"Cron

訪問者によってトリガーされずにスケジュールされたcronを実行するにはどうすればよいですか?

12
cateye

cronに関するDrupalハンドブックページ を読んで、バックグラウンドと実行するコマンドを取得する必要があります。

  • (Linux)サーバーへのシェル/ SSHアクセス権がある場合は、run crontab -u www-data -eを使用して実行し、Webユーザーのcronテーブルを編集できます。上記のリンクの詳細を使用して、適切なcron実行を何度でもセットアップできます。
  • シェルアクセスなしで共有ホスティングを使用している場合は、Webホストのコントロールパネル(CPanel、Pleskなど)を使用してログインし、「スケジュールされたタスク」を追加する必要があります。これはcronタブへのWebインターフェイスとして提供されるため、同じ設定が必要になります。
  • これらが利用できない場合は、ホスティング会社に支援を求める必要がありますが、無料で有料のサービスもあり、リモートでcron.phpページを呼び出すことができます。たとえば Set Cron Job を参照してください。

Elysia Cron module のように見てください。一般的にcronをもっと使いたい場合は、ドキュメントが充実しており、実行するタスクを細かく制御できます。

最後に、訪問者がAdministration"Configuration"System"Cronに到達したら、サイトの実行を無効にすることを忘れないでください。

9
Jim Kirkpatrick

Drupal 7は、モジュール内に Poormanscron にあったコードを組み込んでいます。その目的は、cronタスクを設定できないサイトでDrupal cronタスクを実行することです。 、ユーザーがサイトにアクセスしたとき、およびX時間ごと(表示されたページで設定されているとおり)。

この動作を回避したい場合は、「Run cron every」を「Never」に設定するだけです。見た目とは逆に、ユーザーがサイトにアクセスしたときに何が起こるかに影響します。[1] 引き続きDrupal cronタスクをDrupalの外部から実行できます。Drupal 7では、cron.phpをDrupalの外部から呼び出して、表示された値を渡す必要があります。 「アドミニストレーション>レポート>ステータスレポート」

screenshot

[1]:実際、 cron.phpdrupal_cron_run() も、 Drupal設定ページで使用される変数。使用されるDrupal変数は次のとおりです。

  • Drupal cronタスクが権限のないユーザーから実行されるのを防ぐために使用されるcronキーを含む「cron_key」
  • サイトがメンテナンスモードのときにTRUEに設定される「maintenance_mode」
  • 前回cronタスクが実行されたときのタイムスタンプを含む「cron_last」
13
kiamlaluno