ホーム >  WordPress >  【WordPress】パフォーマンスアップ!wp-cron.phpを停止しよう【パフォーマンス】

投稿日:

【WordPress】パフォーマンスアップ!wp-cron.phpを停止しよう【パフォーマンス】

WordPress

WordPressのサイトのパフォーマンスを上げるための設定を行います。そのため、wp-cron.phpの設定を変更します。

なぜwp-cronを使うのか?

このwp-cron.phpは、Wordpressでcronのような予約実行をするためのファイルです。通常であれば、unixシステムが提供するcronを使用できれば十分です。あえてwp-cronを利用するのは、共有サーバなどでは、システム権限が与えられないこともあるからです。

しかし、アプリケーション側(WordPress)からスケジューリング処理を実施したいという要望は多々あります。cronは使えないけれども、スケジューリングを実施したいという要望を解決するためにwp-cron は設計されました。

なぜwp-cron.phpを停止すべきか?

WordPressを導入したサイトのaccesslogを見ると、wp-cron.phpへのアクセスが頻繁に出ています。通常はサイトへのアクセスがあるたびに実行されます。そのため、アクセスが少ないサイトですと問題ありませんが、ある程度アクセスが多いサイトの場合は無駄に負荷が増えてパフォーマンスが低下します。

※また、wp-cron.phpはDos攻撃などの不正アクセスに利用されることがあります。

wp-cron.phpを停止した場合のデメリット

以下の機能を使っている場合は、wp-config.phpの停止によって動かなくなります。

  • メール投稿
  • 予約投稿
  • XML-Sitemap

解決策

cronで1時間に1回ほど定期的にwp-config.phpを実行するように設定します。XSERVERでは、サーバーパネルからcronを設定することができます。


wp-cron.phpの停止は非常に簡単

①FFFTPなどのようなFTPクライアントソフトで、サーバーにあるWordPressのデータが入っているフォルダ直下→「wp-config.php」を開きます。以下はXSERVERの例です。

  • ~/ドメイン名.com/public_html/
  • wp-admin/
  • wp-content/
  • wp-include/
  • ・・・
  • wp-config.php
  • wp-cron.php

②「define(‘DB_COLLATE’, ”);」の後あたりに、以下を記述します。

・・・(省略)・・・
/** データベースのテーブルを作成する際のデータベースの文字セット */
define('DB_CHARSET', 'utf8');

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');

/** wp-cron停止 **/
define('DISABLE_WP_CRON', 'true');
・・・(省略)・・・

これでかなり軽くなります。

XERVERのサーバーパネルからクローン登録

1時間に1回ほど定期的にwp-config.phpを実行するcronを登録します。通常、cronは以下のようなLinuxコマンドで登録・削除します。

crontab -e

①XSERVERのサーバーパネルを開き、Cron設定をクリックします。

②「Cron設定追加」タブをクリックし、以下のように入力します。

1
時間 *
*
*
曜日 *
コマンド usr/bin/php7.3 /home/サーバーID/独自ドメイン名/public_html/wp-cron.sh
コメント (任意)
  • 時間に「1」を入力します。これは、毎時1分に実行するという意味です。それ以外の分~曜日には「*」(指定しない)を入力します。

コマンドは、以下のように記入します。

usr/bin/php7.3 /home/サーバーID/独自ドメイン名/public_html/wp-cron.php > /dev/null 2>&1

usr/bin/php7.3

phpでスクリプトを実行します。phpX.Xのバージョンは、自身の環境を確認してください。

コマンドのところにはサーバーから実際に実行したいshファイル(シェルスクリプト)までに絶対パスを記述します。例えばサーバーID名が「hoge」で独自ドメイン名が「sample.com」でプログラムファイルが「wp-cron.sh」という場合は、以下のように記述します。

/home/hoge/sample.com/public_html/wp-cron.sh

③内容を確認したら「追加」ボタンをクリックします。

④メモ帳などで以下の内容の「wp-cron.sh」ファイルを作成します。

#! /bin/sh
#
# WordPressのwp-cron.phpの実行
#
curl https:/sample.com/wp-cron.php > /dev/null 2>&1

exit 0

※「sample.com」は、独自ドメイン名に変更してください。

※必ず文字コードをUTF-8で保存してください。

/dev/nullというのはunixのスペシャルファイルの事で、空ファイルの事です。

command > /dev/null 2>&1

2>&1

標準エラー出力の結果を標準出力にマージする。

/dev/null

標準出力を捨てる場所。

つまり、このコマンドの意味は「標準エラー出力の結果を標準出力にマージして、/dev/nullに捨てる」という意味です。

⑤FFFTPで、サーバーにあるWordPressのデータが入っているフォルダ直下に「wp-cron.sh」をアップロードしてください。以下はXSERVERの例です。

  • ~/ドメイン名.com/public_html/
  • wp-admin/
  • wp-content/
  • wp-include/
  • ・・・
  • wp-config.php
  • wp-cron.php
  • wp-cron.sh

⑥wp-cron.shのパーミッションを変更します。FFFTPで、wp-cron.shを右クリック→「属性の変更(A)」を選択します。「現在の属性」を755に変更して「OK」をクリックします。


トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター、フロントエンドエンジニア 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 20

最近の投稿
人気記事
カテゴリー
広告