[adsense][/adsense]
一直以来写部落格赚钱是很切意的一件工作,但是最近就有点让人火大了,在WordPress的新增或编辑文章的画面常常没多久就出现这样画面:
“失去连线。 储存已关闭直到你重新恢复连线。 我们正在备份此文章至你的浏览器,以防万一。”这个讯息只要一出现,我就不能储存草稿也不能发表,就这样一直锁住这些按钮直到要关机了,都还是如此,本来以为网路慢,但是不论在哪上网都是如此。以为是伺服器的问题,一直帮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’re reconnected.’ ); ?>
<span class=”hide-if-no-sessionstorage”><?php _e( ‘We’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,赞。