WordPressプラグイン SNS Count Cacheのカウント・クロール処理実行にOSのcronを使う方法

約5分
1
0
1
0
0
0
2
WordPressプラグイン
WordPressプラグイン SNS Count Cacheのカウント・クロール処理実行にOSのcronを使う方法

WordPressプラグイン SNS Count Cacheは、SNSカウントの定期取得にwp-cronを使用しています。wp-cronは、簡単に言うとWordPressが提供するジョブ・スケジューラ機能であり、WordPressのアップデート確認や記事の予約投稿等にも使用されています。

このwp-cronは、環境要因(キャッシュプラグインとの相性等)によって正常に動作しなくなることがあり、その場合、引きずられてSNS Count Cacheのカウント・クロール処理も動作しなくなってしまいます。

この影響を予め回避する方法、またはwp-cronが動作しなくなった時の対策の一つとして、wp-cronの代わりにOSが提供するcron(※1)を使用する方法を共有します。

※1 OSのcronは、利用者の設定したスケジュールに従って指定されたプログラムを定期的に起動してくれる多くのUNIX系OSで標準的に利用される常駐プログラムを指します。(wp-cronと区別するため、OSのcronと表現します。)

OSのcronを使用する方法

wp-cronの代わりにOSのcronを使用するには、wp-cron.php(WordPressのwp-cronのPHPファイル)をOSのcronから呼び出す方式に変更します。

手順は以下の通りです。

  1. wp-cronの無効化
  2. OSのcronの設定(スケジュールとwp-cron.phpを呼び出すコマンドの登録)
  3. OSのcronの動作確認

1. wp-cronの無効化

wp-config.phpにwp-cronを無効化する設定を追加します。

WordPressをインストールしたディレクトリに存在する「wp-config.php」ファイルに「define( ‘DISABLE_WP_CRON’, ‘true’ );」 を追記してください。

※2 wp-config.phpを編集する前に必ずバックアップを取得してください。

2. OSのcron設定(スケジュールとwp-cron.phpを呼び出すコマンドの登録)

wp-cron.phpを呼び出すコマンドをスケジュールと共にOSのcronに登録します。

wp-cron.phpを呼び出すコマンド

以下、wgetを用いてHTTP経由でwp-cron.phpを叩くコマンドです。

/usr/bin/wget -q -O - https://logicore.cc/wp-cron.php?doing_wp_cron >/dev/null 2>&1

※3 wgetコマンドの絶対パスはXserverの例です。ご利用のサーバに合わせて修正してください。

※4 wp-cron.phpのURLは、本ブログの例です。ご自身のドメイン、WordPressインストール構成に合わせて適宜修正してください。

実行スケジュール

1分間隔でwp-cron.phpを実行する様にします。1分間隔のcronのスケジュール表記は以下になります。スペース区切りで先頭から分、時間、日、月、曜日に対応しています

*/1 * * * *

OSのcron設定手順

レンタルサーバを利用している場合は、当該会社がcron設定用の画面を提供していることが多いです。今回は、Xserverを例に説明します。(他レンタルサーバ会社を利用している場合は、その会社が提供するcron設定手順に従ってください。AWSやVPS等で自分で運用している場合は、crontabの設定を行うことになると思います。)

① サーバーパネルよりcron設定画面に移動する。

② 実行スケジュール(分、時間、日、月、曜日)とコマンド(上述のコマンドをご利用の環境に合わせて修正したもの)、コメントを記入し、「確認画面へ進む」ボタンを押下する。

③ 確認画面で設定を確定させると、下記の通りCron設定一覧に設定内容が表示されます。これで設定が完了します。

3. OSのcronの動作確認

wp-cronを無効化した状態でwp-cronに登録されたフック(ジョブ)が実行されるか確認します。(ジョブが実行されれば、wp-cronの代わりにOSのcronが動作していると判断できます。)

確認には、以下のWordPressプラグインを使用します。

WP Crontrolをインストールし有効化すると、[WordPress管理画面 左メニュー]→[ツール]→[Cronイベント]にてwp-cronのフック(ジョブ)のスケジューリング状況を確認できる様になります。

そのページにて「次の実行」列に記載の予定実行日時に当該フック名(ジョブ名)の行が順次消えることを確認して下さい。

フック名(ジョブ名)が消えれば、そのジョブは処理の成否にかかわらずOSのcronから実行されており、OSのcronが動作していると言えます。(逆にフック名が予定実行日時になっても残り続ける場合は、ジョブの実行が進んでおらず何らかの問題があります。)

スポンサーリンク

補足

SNS Count Cacheのカウント・クロール処理にからめてOSのcronの使用方法を説明しましたが、この設定をすると、SNS Count Cache以外のwp-cronに登録されたフック(ジョブ)、例えば予約投稿等もOSのcron経由で呼び出される様になります。追加で配慮すべきことは特にないのですが、予めご認識おき下さい。