[WORDPRESS]投稿を公開しようとすると固まってしまった時の対応方法

広告

あくまで、私のパターン。結論から言うと、保存をした後のPingを打つプラグイン「WebSub/PubSubHubbub」の中でエラー(Out of Memory)が発生したことが原因でした。プラグインを停止することで一旦解消しました。(とはいえ、Pingを打たないわけにもいかないし、Out of Memoryの問題は別途解消する必要がありますorz)

 

目次

最初は、Really Simple CSV Importerが動かないと思いました

ちょっと抜けてるページを取り込もうと思って簡単に処理をしたところ、なんどやってもうまくいきません。エラーとかが表示されるわけではなく、タブの「インポート」の横のファビコンの所が、くるくる回る絵に変わったまま何もかえってこなくなってしまいました。

エラーメッセージがでるわけでもないので、まったく何が起こっているのかわかりません。困りまくって、ネットを検索しました。

とりあえず、デバッグモードにした。

こちらのサイトを見て設定しました。


ワードプレスがインストールされているフォルダの直下にあるwp-config.phpを修正します。
元々は、以下のようなコードです。デバッグモードがfalseになっています。

/**
 * 開発者へ: WordPress デバッグモード
 *
 * この値を true にすると、開発中に注意 (notice) を表示します。
 * テーマおよびプラグインの開発者には、その開発環境においてこの WP_DEBUG を使用することを強く推奨します。
 *
 * その他のデバッグに利用できる定数については Codex をご覧ください。
 *
 * @link http://wpdocs.osdn.jp/WordPress%E3%81%A7%E3%81%AE%E3%83%87%E3%83%90%E3%83%83%E3%82%B0
 */
define('WP_DEBUG', false);

/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */

それを以下のように修正しました。デバッグモードをtrueにし、ファイルへの出力をするように行を追記しました。

/**
 * 開発者へ: WordPress デバッグモード
 *
 * この値を true にすると、開発中に注意 (notice) を表示します。
 * テーマおよびプラグインの開発者には、その開発環境においてこの WP_DEBUG を使用することを強く推奨します。
 *
 * その他のデバッグに利用できる定数については Codex をご覧ください。
 *
 * @link http://wpdocs.osdn.jp/WordPress%E3%81%A7%E3%81%AE%E3%83%87%E3%83%90%E3%83%83%E3%82%B0
 */
define('WP_DEBUG', false);
// ログファイルに保存する場合は、以下を書き足します。
if ( WP_DEBUG ) {
    // debug.log ファイルに記録
    define( 'WP_DEBUG_LOG', true );
    // ブラウザ上に表示しない
    define( 'WP_DEBUG_DISPLAY', false );
    // ブラウザ上に表示しない
    @ini_set( 'display_errors',0 );
}
define('WP_MEMORY_LIMIT','256M');

/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */

これで、同じ処理をするとエラーメッセージが、wp-contentの直下にdebug.logという名前で吐き出されます。これを順次潰していけば、きっと解消するはずです。

エラーを解消するも、状況は改善されない。

ここまでくれば、後は簡単(でもないですが…)
ひとつ、ひとつエラーの原因を突き止め、修正していきました(そもそも、デバッグが必要だったものだったので良かったのですが)

全てのエラーを解消したら、治るかと思いましたが、エラーがLogに出力されなくなってからも、インポート時にくるくるが止まらないのは変わりません。

予約投稿の取り込みならうまくいく?

再度、Really Simple CSV Importerで、取り込めない と言った検索ワードで探し回って出会った以下のページで、予約投稿にすればうまくいくというのを読みました。

確かに、予約投稿になるように日付を未来日にしたところ、ちょっとだけ動作が変わりました。くるくるがとまり、「1.」とだけ表示去るようになりました。でも、相変わらず1行目しか取り込まれません。(予約投稿状態で1行だけ投稿されるだけです。

予約投稿を手動で公開しようとすると止まる

そこで、しょうがないのでそれを手動で公開しようと、公開日時を今の時間にして、公開ボタンを押すと….くるくるがまた止まらなくなってしまいました。

あれ? もしや…Really Simple CSV Importerのせいじゃない? ??

….すみません。Really Simple CSV Importerは無実でした。m(_ _)m

そもそも、投稿を公開しようとすると必ず「くるくる」が止まらない状態になりますorz。より重症です。

ようやく投稿後の処理に問題があるのではないかということに思い至りました。

いろいろ試してみると、確かに、投稿の更新処理をしても、戻ってきません。
しかし、それを無視してトップページを開き直したり、投稿の一覧を表示し直してみると、どうも更新そのものは行われているようです。

ここまできて初めて、更新処理後に何かがうまくいっていないのではないかと思い至りました。

デバッグログには、以下のメッセージが出るようになりました。(これも、必ず出ているわけではなかったのでハマったのですが)

[11-May-2017 14:00:39] PHP Fatal error:  Out of memory (allocated 227016704) (tried to allocate 4194304 bytes) in /xxxxxx/wp-includes/post.php on line 524

どこだかわかりませんが、メモリーエラーがおきているようです。(いや、一応post.phpを開き該当の行まで行ったのですが、あまりに複雑すぎて、その行の前後が何をやっているかわかりません…静かに閉じました(笑))

ただ、どこで置きているかといえば、現象面を見る限り、更新後に起きている様子(更新は行われてから固まっているので)。
更新後にする処理は…と考えて、Sitemapの構築とPingが原因ではないかと思い至りました。(どちらもプラグインとして入れているのは確かだったので)

そして、導入/有効化していた 「Google XML Sitemap Generater」と「WebSub/PubSubHubbub」を片方づゝ、停止して更新処理を行いました。

結果として、「WebSub/PubSubHubbub」停止すると、更新作業がさくっと終わることがわかりました。
最初は、投稿画面で手動で投稿を公開⇒Really Simple CSV Importerで取り込み、両方正常動作することがわかりました。

ようやく更新ができるようになった!しかし…

今回止めたプラグインは、このブログでは普通に使っているプラグインで、プラグイン自体に問題があるわけではないと思います。

おそらくは、こちらのブログと大きく違うのは、20,000近い投稿があることが原因ではないかと思います。
php.iniやwp-config.php等に利用するメモリー量を拡張する記述をいれたのですが、解決していません。

この辺、今後問題になるかもしれないので、継続調査をしていこうと思います。

広告

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です