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を提供する場合に利用することができます。
- cPanelのにログインします。
- advanced> Cron Jobsをクリックします。
- 共通設定 ドロップダウンから Once Per Hourを選択します。
- Hourドロップダウンから Every Sixth Hourを選択します。
- もう最後に、以下の空欄に、次のように入力します。
cd /home/username/public_html; php -q wp-cron.php
- ユーザ名は cpanel ユーザー名です。 」Add New Cron Job「」を押すと、新しいCronジョブが追加されます。
- 今、新しいCronジョブが追加されているのを見ることができます。 上記のように設定すると、6時間ごとに WP-cron.php スクリプトを実行することになります。
Cronジョブが実行されるたびに cronのメール セクションに入力した電子メールアドレスに通知が送信されます。 または、 Command ラインに次のようなコードを使用することもできます。
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分を意味します。
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行がすでに追加されていることを確認してください。 その行を見つけて削除し、上記のXNUMX行を/* That's all, stop editing! Happy publishing. */ラインのすぐ上に移動してみてください。
こんにちは。
ブログの内容を見ている間、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様ももしかしたら同じ症状を経験しておりたアンウシンでしょうか?
この部分をどのように対処されたか気にしてお残します。
こんにちは、Frydek様。 この問題は、時間になると、一度確認してみましょう。
その部分についてお問い合わせをしてRank mathから次のような回答をいただきました。
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 最新バージョンでもWP_CRON_LOCK_TIMEOUT設定が可能です?
WordPressでサポートされる機能であるため、問題はないようです。
メモ:
https://developer.wordpress.org/reference/functions/wp_functionality_constants/
常に WordPress 関連良い情報を共有いただき、ありがとうございます。
いつかは必要になるね。
サイトの訪問者数が多くなる場合は、この方法が必要になることができるようになります。
楽しい一日になってください。
素晴らしい投稿。
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.