ベストセラー人気 WordPress テーマTop 30 詳細

WordPressでwp-cron.php無効にしてサイトの速度向上させる

Last Updated:2020年4月5日| 10のコメント
  • Naver ブログを共有する
  • Naver バンドに共有する
  • Facebook 共有する
  • Twitter 共有する
  • 카카오스토리공유하기

WordPressは WP-cron.phpという名前のファイルを使用して、仮想Cronタスクや予定された文章の投稿、プラグイン/テーマの更新の確認、通知メール送付などの操作を自動的に実行します。

基本的には WordPressはスケジュールされたタスクがある場合、誰かが WordPress サイトを訪問するたびに WP-cron.phpを呼び出すように設定されています。

トラフィックが少ないサイトの場合には、何の問題もないが、訪問者が訪問したときに何度も予定されて作業を確認することは非常に非効率的であることができ、サーバリソースの使用率の問題を引き起こしてサイトの読み込みが遅いことができます。

wp-cron.phpを無効にする

しばらく前に WordPress サイトが非常に遅くなることがありました。 Webホスティング担当者に確認してみる WP-cron.phpこのあまり呼び出されていて、サイトのリソースが不足してなって表示される現象という言葉を聞きました。 (実際には知ってみると、これは表面的な問題であり、根本的な原因は、他の所であった。)ので、 WP-cron.phpを無効にしたことがありました。 WP-cron.phpを並ぶ化するには、次のように WP-config.phpを ファイルに define( 'DISABLE_WP_CRON'、 'true');のみを追加してくれればされます。

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

define('DISABLE_WP_CRON', 'true');

修正した後に保存するようにします。 その後、新しい訪問者がサイトを訪問しても、 WP-cron.php ファイルが自動的に実行されません。

手動でwp-cron.phpのCronジョブの設定する

WP-cron.phpを無効にすると WordPressで実行する必要が自動処理が実行されません。 この場合は、手動で実行するように設定することができます。 次の方法は、 Bluehostのようにcpanelを提供する場合に利用することができます。

  1. cPanelのにログインします。
  2. advanced> Cron Jobsをクリックします。
  3. 共通設定 ドロップダウンから Once Per Hourを選択します。
    manual cron jobs 1
  4. Hourドロップダウンから Every Sixth Hourを選択します。
    manual cron jobs 2
  5. もう最後に、以下の空欄に、次のように入力します。
    cd /home/username/public_html; php -q wp-cron.php
  6. ユーザ名はcpanelユーザー名です。 "Add New Cron Job"をクリックすると、新しいCronジョブが追加されます。
    manual cron jobs 3
  7. 今、新しいCronジョブが追加されているのを見ることができます。 上記のように設定すると、6時間ごとに WP-cron.php スクリプトを実行することになります。

Cronジョブが実行されるたびに cronのメール セクションに入力した電子メールアドレスに通知が送信されます。 または、 コマンド ラインに次のようなコードを使用することもできます。

wget http://www.yoursite.com/wp-cron.php?doing_wp_cron=1 > /dev/null 2>&1

またはいくつかのシステムでは、 curl 関数が使用されることがあります。

curl -s http://www.yoursite.com/wp-cron.php?doing_wp_cron=1 > /dev/null

もっと詳しく この記事を参考にしてみてください。 wp_schedule_evenを使用して、手動でCronタスクをスケジュールする方法は、「Properly Setting Up WordPress cronジョブ"文を参照してください。(> / dev / null 2>&1を追加すると、スクリプトを静かに(silent)を実行して出力を生成しません。 この記事この内容について詳しく説明されていますね。)

予約文発行のような WordPressのいくつかの機能は、 WordPress Cronを利用します。 WP-CRONを無効にする場合、一部の機能が正常に動作しない場合があります。

WP_CRON_LOCK_TIMEOUT

他の方法でWP_CRON_LOCK_TIMEOUTを使用してCronジョブの実行時間を調整することができます。 WordPressがロードされると、Cronジョブが実行中(lock状態)であることを確認します。 Cronが実行されない場合Lockを作成しようとしたり、Lock Timeoutに達していない場合、Cronが実行されません。

実行中のCronジョブがなく、Timeoutが経過した場合、Cronが実行されます(参照)。 次のようなコードを WP-config.phpをに追加するようにします。

define('WP_CRON_LOCK_TIMEOUT', 3600);

上記の数字は秒(sec)を示し、3600は60分を意味します。

メモ:



10のコメント

コメント

  1. define( 'DISABLE_WP_CRON'、 'true');
    define( 'WP_CRON_LOCK_TIMEOUT'、3600);

    wp-config.phpに2行を追加したところ、クエリモニタでは、
    Constant WP_CRON_LOCK_TIMEOUT already defined

    エラーが表示されます。
    すでに定義されて出てくる、...語するように解決はできますか?

    応答
    • こんにちは、jason様。 エラーメッセージで意味するように、似たようなコードが既にwp-config.phpファイルに追加されているときに、このようなエラーが表示されることがあります。 wp-config.phpファイルのwp-config.phpファイルにWP_CRON_LOCK_TIMEOUTラインが既に追加されているかどうかチェックしてみてください。 このラインを見つけて削除して、上の二つのラインを/ * That's all、stop editing! Happy publishing。 * /ラインのすぐ上に移動させてみてください。

      応答
  2. こんにちは。
    ブログの内容を見ていた中、SEOプラグインでRankMathを使用おられる内容を見ました。 この場合、本内容に記載されたdefine( 'WP_CRON_LOCK_TIMEOUT'、3600); 定数を定義しても

    RankMathで付与したCronスケジュールはまだ動作している問題がない方たですか?
    action_scheduler_run_queueが毎分実行されるようになっている部分です。

    RankMathにより実行されるスケジュールは
    action_scheduler以外5分間隔で設定されているwp_convert_yoast_blocks_cron_interval、wp_convert_schema_posts_cron_intervalも確認されます。

    WP_CRON_LOCK_TIMEOUT定義にもかかわらず、動作がされていますよ。
    Word様ももしかしたら同じ症状を経験しておりたアンウシンでしょうか?

    この部分をどのように対処されたか気にしてお残します。

    応答
    • その部分についてお問い合わせをしてRank mathから次のような回答をいただきました。

      That cron job you are seeing is the default WP Cron that runs every minute on all WordPress installations。 Our plugin hooks into that to fetch the Analytics data from your Google account、but we do not run our tasks every minute。

      You can learn more about that here: https://wplift.com/what-is-wp-cron-plus-how-to-disable-wp-cron-in-2020

      action_scheduler_run_queueはすべて WordPress インストールサイトで1分ごとに実行されている基本的なWP Cronとね。

      おそらくWP_CRON_LOCK_TIMEOUT定数が3600秒に設定されているので、action_scheduler_run_queueを使用するイベントが1分ごとに実行されないことがあります。

      https://www.screencast.com/t/Jou2KFdCw

      応答
    • WordPressでサポートされる機能であるため、問題はないようです。

      メモ:
      https://developer.wordpress.org/reference/functions/wp_functionality_constants/

      応答
    • サイトの訪問者数が多くなる場合は、この方法が必要になることができるようになります。

      楽しい一日になってください。

      応答
  3. 素晴らしい投稿。
    If you're on a shared hosting that does not offer cron jobs、you can be found a list of free webcron at: http://www.cronjobservices.com.

    応答