プラグイン「Postie」とGmailを使って記事をメール投稿するコンテンツを作ったのですが処理が遅延する。
調べるとWordPressの疑似Cron(wp-cron.php)が宿題を溜め込むタイプという事が原因でした。
【参考サイト】
Postieで快適WordPressメール投稿(Fenix)
WordPressの予約投稿が失敗するからALTERNATE_WP_CRONをtureにしたらdoing_wp_cronが激増した(むねひろ@プログラマー)
WordPressの疑似Cronとは
WordPressの予約投稿処理を行う「wp-cron.php」ですが、サーバーのCronとは異なり、 「ウェブサイトにアクセスがある度に時間を読み、予約された処理があれば実行する」というものなので困ります。
ぜんぜん困ります。
アクセスが少ないサイトの場合は何日も処理が実行されないことになるじゃないですか。
そこで、この疑似cronを停止してサーバーのCron設定を使う事にします。
wp-cron.phpを使うよりサイトの表示も早くなるし良い事づくしの様です。
という事で、今後自分が使うレンタルサーバー「mixhost」「さくらインターネット」「Xserver」「Biz メール&ウェブ」それぞれの設定について記録しておきます。
wp-cron.phpの動きを止めてサーバーのcronで動かすための設定
WordPress側の共通設定
どのレンタルサーバーを使う場合も共通です。
WordPressインストールフォルダ直下にある「wp-config.php」をダウンロードして下記を「設定が必要なのはここまでです…」の上に追記してアップロードします。
※wp-config.phpをインストールフォルダより上の階層に移動している人は上の階層を探してください。
//wp-cronを動かす
//define('ALTERNATE_WP_CRON', true);
//wp-cronを停止
define('DISABLE_WP_CRON', 'true');
↑これでwp-cron.phpを止めました。
また動かす時は下記の様に編集してアップロードします。
//wp-cronを動かす
define('ALTERNATE_WP_CRON', true);
//wp-cronを停止
//define('DISABLE_WP_CRON', 'true');
mixhostで1分に1回wp-cron.phpを動かす設定
cPanelにログイン
- 「詳細」>「Cron ジョブ」をクリック
- 「新しい cron ジョブの追加」項目を設定
コマンド:
/usr/local/bin/php /home/ユーザー名/public_html/フォルダへのパス/wp-cron.php - 「新しい cron ジョブの追加」をクリック
※ ちゃんと動くかどうかは予約投稿が正常に処理されるかでご確認ください。
mixhost ヘルプ&サポート
さくらインターネットで2分に1回wp-cron.phpを動かす設定
さくらインターネットは最低が2分単位だったので…
レンタルサーバ コントロールパネルにログイン(新コントールパネル)
- 「スクリプト設定」>「CRON設定」をクリック
- 「スケジュール追加」をクリック
- 実行コマンド
/usr/local/bin/php /home/ユーザー名/www/フォルダへのパス/wp-cron.php 1> /dev/null - コメント(何の処理なのかわかる説明を記入)
- 実行日時
※ ちゃんと動くかどうかは予約投稿が正常に処理されるかでご確認ください。
さくらのサポート情報
Xserverで1分に1回wp-cron.phpを動かす設定
サーバーパネルにログイン(X10プラン)
- 「アカウント」>「Cron設定」をクリック
- 「Cron設定追加」タブをクリック
- 分~曜日の設定を入力
- コマンド(下記はPHP7.2の時の設定コマンドです)
/usr/bin/php7.2 /home/サーバーID/ドメイン名/public_html/wp-cron.php - コメント(何の処理なのかわかる説明を記入)
- 確認画面へ進み、登録
※ ちゃんと動くかどうかは予約投稿が正常に処理されるかでご確認ください。
レンタルサーバー【エックスサーバー】
Biz メール&ウェブで1分に1回wp-cron.phpを動かす設定
コントロールパネルにログイン
ファイルパーミッションと所有者確認
※定期実行タスクの設定を行う前に画面上部の「ファイル」からwp-cron.phpの権限と所有者を設定します。
- 「/users/ドメイン管理者>」からwp-cron.phpがあるディレクトリを開き、「wp-cron.php」の[詳細]をクリックします。
- 「操作」欄の[属性変更]をクリックして所有者の[実行]にチェックを入れ[保存]。
定期実行タスク設定
- 「システム」>「定期実行タスク」をクリック
- 「新規作成」ボタンをクリック
- タスクグループ:新規作成にチェック
- コマンド(PHP7.2の場合)
/usr/local/global-bin/php-7.2.cgi /usr/home/アカウント名/www/htdocs/フォルダのパス/wp-cron.php - タスクの実行感覚:「日時指定」にチェックを付ける
- 下図の様に設定
- 「保存」をクリック
※ ちゃんと動くかどうかは予約投稿が正常に処理されるかでご確認ください。
Cronてなんて読むの問題
クロンと読むんだと思ってますが、「クーロン」と読む人も居るので何が正しいのか調べてみた。
日本語ではクーロンという読みが慣習的に広く用いられているが、英語では通常クロンまたはクローンと発音する。
crontab – Wikipedia
出たよ「日本では」。
和製やめろー!混乱するだロー!
コメントを残す