wordpressで更新をかけて失敗してもう一度更新をかけたりすると「別の更新が現在進行中です。」なんて文言が出てきて15分ぐらいしないと再度更新処理ができないという仕様がかなりイラッとするけど設定で回避策がなさそうだから直接コードを書き換えるの巻

[Sponsored Link]


当ブログでは「役に立った!」「写真使いました!」などご参考頂いた方からのAmazonギフト券の寄付をお待ち致しております。

Share on FacebookTweet about this on TwitterShare on Google+Share on TumblrPin on PinterestShare on LinkedInDigg this

このサイトはwordpressを使っている。ときどきwordpress本体の更新がかかるが、更新をかけてから、何らかの理由で処理が失敗することがある。で、そのあともう一度更新をかようとすると「別の更新が現在進行中です。」という文言が出てくる。何度更新ボタンを押してもだめ。「しばらくしてから」って、いったいどのくらいだよって思ってググると、みなが口を揃えて「15分ぐらいしないと」と記載している。しかし、急いで更新して外出したいのに、そんな15分なんてハンパな時間は待ってられない!重複して更新処理が走るのを回避しているという実装はわかるが、自分一人でしか面倒みてないブログなので、ぶっちゃけイラッとするのだ。ということで、強制的に処理を進めさせるべく、コードを一部修正して更新を継続させる。

※注意

一応お約束だが、コードを直接書き換える方法なので、オススメはできない。
私が勝手に下記のように対処しているにすぎないので、公式・非公式を問わず質問をしても「やめたほうがいい」という回答になると思われる。

なぜなら、複数の更新処理が同時に走ってしまうことによって、データベースが破壊される可能性が否定できないからだ。記事内容や画像リンクとの整合性がとれなくなったり、そもそも記事自体や画像自体にアクセスできなくなる場合もあるので、確実に自分一人だけが処理しているという条件でない限り、この作業は絶対にできない。

したがって
これから書く内容はすべて
自己責任において
実施していただくことになる。

ちなみに私は直接ホスティングサイトにsshログインをしてviを使って編集している。
sshなんて知らん・使えんという人や、使いたくてもホスティング側がsshを認めてない場合は、ftpツールを使って編集する。
その場合は手元のファイルをメモ帳やテキストエディットなどで編集してからアップすることになる。
ftpの人は一度ブログサイトにftp接続して、以下の対象フォルダ(ディレクトリ)内にある対象ファイルをget(ダウンロード)して、そのファイルを編集・保存するようにすればいいだろう。

対象フォルダ(ディレクトリ)名:< ブログディレクトリ>/wp-admin/includes
対象ファイル名:(4.5以前) class-wp-upgrader.php
       :(4.6以降) class-core-upgrader.php

以下の処理は何をしているかというと、次回更新までの待ち時間を強制的に短くする、という処理である。
つまり、15分待たなければならないところを、1分とか0分とかにしてしまおうということだ。

具体的な編集箇所の話に入る。

4.5の例でいうと、wp-admin/includes/class-wp-upgrader.phpの2320行目にある「15」を、「1」とか「0」に変更して、保存する。ftpの人は、手元のclass-wp-upgrader.phpを編集・保存したら、該当ディレクトリにput(アップロード)する。
ちなみに4.4以前のファイルは調べていないので、対象ファイルが同じであるかどうか、あるいは同じ行数であるかどうかは、わからない。手掛かりとしては「MINUTE_IN_SECONDS」という文字を探すことになる。

なお執筆時時点では4.6が最新バージョンなので次回更新まで、この編集は不要なのだが、一応調べてみた。
どうやら4.6では(からは、なのかな?)、class-wp-upgrader.phpファイルに記述されていた多くの内容が細分化され、別のファイルにそれぞれ保存されるようになったようだ。
したがって、4.6ではclass-core-upgrader.phpの117行目が修正ポイントになるようだ。
修正方法は同じで「15」を「1」か「0」にすればいい。

「15」っていうのは「15分」の意味なので、「1」だと1分であり、「0」だと0分だ。どっちでも問題はない。
「別の更新が現在進行中です。」になって、対処をしようとするまでに、おそらく1分以上は時間が経過しているはずなので、要するに「現在進行中です、が表示されてから修正対処するまでに経過した時間(分)」を書けばいい。
めんどくさいって人は、0にすれば、間違いはない。

保存して、ftpの人はput(アップロード)して、ふたたびwordpressの「更新」ボタンをクリックすれば、更新が開始される。

なお更新後は新しいソースファイルで上書きされるため、「1」や「0」に編集した箇所は新バージョンのファイルで上書き更新され元に戻る。
したがって、次回も同様の処理をしようとした場合は、上記手順を最初のステップからやる必要があるだろう。

あくまでも上記は私がやむなく対処している方法であって、決して推奨されない。
また、今後もこの方法が有効であるかどうかは定かではない。たとえば3.9の時には1時間で設定されていたようだ。
ただ本家では、おそらくこの15分の時間を短くするとか、設定で変更できるようにするといった実装は「しない」と私は想像する。この調整はきっと長い間議論された上で設定された値であるに違いないからだ。今後、長くなることはあっても、短くなる可能性はないのではなかろうか。

そして何度も申し上げて恐縮ではあるが、ここに書かれた内容はすべて自己責任において実施していただくことになる。

WordPressサイト作成塾いちばんやさしいWordPressの教本 人気講師が教える本格Webサイトの作り方 第2版 WordPress 4.x対応一歩先にいくWordPressのカスタマイズがわかる本小さなお店&会社の WordPress超入門 ―初めてでも安心! 思いどおりのホームページを作ろう!現場でかならず使われているWordPressデザインのメソッド[アップデート版]グレイス 甲州 2012 750ml湘南貿易 デュック・ド・モンターニュ ノンアルコールワイン 750mlキリン ホワイトホース 12年 40度 700ml

Share on FacebookTweet about this on TwitterShare on Google+Share on TumblrPin on PinterestShare on LinkedInDigg this

当ブログでは「役に立った!」「写真使いました!」などご参考頂いた方からのAmazonギフト券の寄付をお待ち致しております。


Atsushi Ezura について

ナチュラルな女性のしぐさや表情を撮りたいIT系エンジニア。女性モデル募集中プロフィール
カテゴリー: Hack, PHP, Wordpress, ウェブ, コンピュータ, ソフトウェア タグ: , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。