WordPress的失去連線快殺了我

一直以來寫部落格賺錢是很愜意的一件工作,但是最近就有點讓人火大了,在WordPress的新增或編輯文章的畫面常常沒多久就出現這樣畫面:

2014-03-04_154431

「失去連線。 儲存已關閉直到你重新恢復連線。 我們正在備份此文章至你的瀏覽器,以防萬一。」這個訊息只要一出現,我就不能儲存草稿也不能發表,就這樣一直鎖住這些按鈕直到要關機了,都還是如此,本來以為網路慢,但是不論在哪上網都是如此。以為是伺服器的問題,一直幫Apach、MySQL做最佳化,也沒有。我開始懷疑是WordPress的問題,因為在更新到3.6版以前,不曾有過這樣的問題,華文的使用者好像沒這個問題,所以我反查這個中文資訊,查到是edit-form-advanced.php裡有這樣的訊息:

<div id=”lost-connection-notice” class=”error hidden”>
<p><span class=”spinner”></span> <?php _e( ‘<strong>Connection lost.</strong> Saving has been disabled until you&#8217;re reconnected.’ ); ?>
<span class=”hide-if-no-sessionstorage”><?php _e( ‘We&#8217;re backing up this post in your browser, just in case.’ ); ?></span>
</p>
</div>

從這裡的英文訊息,就會查到確實有人跟我一樣的問題,但是很多人都說是伺服器的問題,不是WordPress的問題。

ㄚ琪繼續以lost-connection-notice為關鍵字搜尋,查到autosave.js裡有這一段程式碼:

// When connection is lost, keep user from submitting changes.
	$(document).on('heartbeat-connection-lost.autosave', function( e, error ) {
		if ( 'timeout' === error ) {
			var notice = $('#lost-connection-notice');
			if ( ! wp.autosave.local.hasStorage ) {
				notice.find('.hide-if-no-sessionstorage').hide();
			}
			notice.show();
			autosave_disable_buttons();
		}
	}).on('heartbeat-connection-restored.autosave', function() {
		$('#lost-connection-notice').hide();
		autosave_enable_buttons();
	});

我把這一行autosave_disable_buttons();給註解掉,還是沒用。

我就改查heartbeat-connection-lost這個東西,才發現WorPress真的在3.6版以後增加了heartbeat這個API,Orz…

本來想停掉heartbeat這個API的,但是怎麼試也沒用,有時連快速編輯也會一併停掉,這我可不想停。

繼續努力找到「It’s not WordPress’ Heartbeat and cron killing your server.」,啥米?不是WordPress的錯,難道是伺服器的錯?終於作者建議了調整Apache設定可以解決這個問題:

  • 把Timeout值調到10
  • 改變MPM-prefork的設定:
    • StartServers 5
    • MinSpareServers 5
    • MaxSpareServers 10
    • MaxClients 200
    • MaxRequestsPerChild 10000

也提到了WP Super Cache的使用很讚,不過我把它幹掉了,因為我不滿意。

重新啟動Apache,傑克好多了,不要鎖住文章很久,看來這樣的設定很搭WordPress的 Heartbeat,讚。

感謝你看到這裡,很快就可以離開了,但最好的獎勵行動就是按一下幫我分享或留言,感恩喔~

點我分享到Facebook

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *