web-dev-qa-db-ja.com

WP-CRONサーバーの負荷濫用の取り扱いを改善

multiplereportsonhowwp-cronafarfrom 理想これはページがロードされるたびに実行されるためですが、ほとんどのシナリオでは不要です(必要なシナリオの1つは、schedule postsを使用する場合です)。

一般的なアドバイスは、wp-config.phpにdefine('DISABLE_WP_CRON', true);を追加してから、実際のcronジョブをスケジュールすることです(十分な管理者アクセス権がある場合)。

しかし、 WP 3.3以降、 WP_CRON_LOCK_TIMEOUTがあります。これは、「1つのcronjobのみが起動される期間を定義する」というものです。

何百ものWPインストールを実行する場合、たくさんのcronジョブを作成しなければならず(そして削除すると、そのwpインストールを削除しなければなりません)、これは面倒になるかもしれません。したがって、 最近の解決法はdefine('WP_CRON_LOCK_TIMEOUT', 900);を設定することです(wp-cronを900秒ごとに実行したい場合)。

問題は、誰でもこの目的でWP_CRON_LOCK_TIMEOUTを使用したことがあるということです。これは意図した用途ですか?

5
Gaia

これがWP_CRON_LOCK_TIMEOUT定数の意図的な使用方法です。

WordPressがロードされると、cronジョブが実行されているかどうかを確認します(cronがロックされている場合)。 cronがロックされていない場合、ロックを作成しようとします - ロックタイムアウトに達していないと、ロックを取得できず、cronは実行されません。

Cronジョブが実行されておらず、タイムアウトが経過した(つまりロックを作成できる)場合は、cronが実行されます。

7
EAMann