web-dev-qa-db-ja.com

WordPressのcronジョブはページの読み込みを遅くしますか?

ユーザーがサイトにアクセスし、彼の訪問が非常に集中的なcronジョブを引き起こした場合、ページの読み込み速度は遅くなりますか?私はページがcronジョブがロードする前に実行されるのを待たないことを理解していますが、cronジョブは並行して実行されているので、それでもサーバーが忙しいのでページのロードが遅くなる場合がありますか?

7
urok93

短い答え - いいえ - 。どのページ要求でもスケジュールされたキューが初期化されます。それは単なる初期化要求です。 Wp-cron要求はスタンドアロンの要求です。

そのため、URL /somepageをリ​​クエストするだけで、リクエストを/wp-cron.phpに初期化するだけです。

ただし、cronイベントがうまく機能しない場合(1000 dbクエリがある、または応答時間の長いリソースを要求しているなど)、あるいはその両方の場合、または要求ごとにcronイベントを再スケジュールする場合...他のhttpリクエストは、リソース、CPUパフォーマンス、メモリなどを消費します。十分なリソースを食べると、ページは遅くなります。

10
Butuzov

ほとんどの場合、短い答えは実際にはyesです。

まず、ほとんどのセットアップでは、cronジョブを生成すると、ページのロードで1秒の遅延が発生します。これは、1秒のタイムアウトでループバックHTTP要求を介して行われるためです。 https://wordpress.org/supportを参照してください/ topic/save-a-full-second-on-cron-execution /

次に、生成されたジョブは、データベースアクセス(および他のリソース)のページロードと競合します。複数のプロセスがデータベースを同時に読み取ることができます。ただし、プロセスがデータベースに書き込むときは常に、他のプロセスによる同時書き込みまたは読み取りアクセスを防ぐためにデフォルトでロックされます- https:// stackoverflow .com/questions/1005206/does-sqlite-lock-the-database-file-on-reads#answer-1005218 。この影響は、cronジョブのデータベース更新の複雑さと、データベースが実際にロックされる期間に依存し、重要でない場合があります。もちろん、ページがリクエストされたときにcronジョブが実行されていても、ページの読み込み時にcronジョブが生成されると問題になります保証少なくとも影響しますそのページの読み込み。

サーバー/ホスティングが許可する場合は、コマンドを使用して、数時間ごとに実行されるようにスケジュールされたcronジョブをセットアップすることをお勧めします

php -q /path/to/wp-cron.php

wp-config.phpの次のエントリを使用して、ページの読み込み時にcronの生成を無効にします。

define('DISABLE_WP_CRON', true);
8
Jake