最近更新文章时总是提示“连接丢失。保存已被禁用,直到您重新连接。 我们正在您的浏览器中备份此文章,以防不测。”
导致更新文章时经常要等半天,要了老命了。检查数据库和服务器都是正常的,就是不能正常的发表和编辑文章。提示截图如下:
网上搜集的解决方案(一):插件原因
网上说通过观察服务器的日志和通讯信息,找出了导致这个问题的原因。主要是插件同步信息造成的,集中反馈的是 baidu-sitemap-generator 插件造成的。
还有类似以下插件:
- WP-新浪登录插件
- 以及可能包含同步功能的其他插件。
在发布文章之前可以先把这些插件禁用,等发布完成后再重新启用。
原因分析:自动保存功能每两分钟执行一次,次数多了云盾会认为这是 SQL 注入而屏蔽。你可以到云盾“应用防火墙”中看看有没有屏蔽记录,如果没有,等个大约半小时就能恢复访问,如果有,或是等不了那么长时间,那就提交工单,说明被屏蔽 IP 地址和要访问的 ECS 的地址。
网上搜集的解决方案(二):自动保存功能
在编辑文章时,常出现错误提示:连接丢失。保存已被禁用,直到您重新连接。
只要仅仅是编辑文章时出现的问题,一般不会是重大错误,不必慌张。但既然影响了编辑体验,问题还是要解决的。 在网络上有众多解决方案,但均效果不佳。近期使用过数个解决方法,或许可以帮助你治标或治本。
请确认没有进行过其他操作,如编辑主题代码等,再尝试以下方法。另外检查一下是不是真的断网了……
1、禁用自动保存功能(治本)
WordPress拥有自动保存功能,每2分钟就会自动存一份草稿。这无疑是个好功能,但自动保存会导致对数据库的频繁访问,并增加服务器压力,尤其是对小服务器来说更是如此。在文章编辑半途中,尤其是当文章内容量较大的时候,出现这个问题基本是这个原因。
解决方法是调高文章自动保存的频率,或直接禁用(个人建议禁用,很少会直接在Wordpress里写文章吧……)。
禁用方法:在functions.php中插入以下代码:
- add_action(‘wp_print_scripts’,’disable_autosave’);
- function disable_autosave(){
- wp_deregister_script(‘autosave’);
- }
另外,还建议你关闭Wordpress中的修订功能,除非你用这个做Wiki之类的网站,否则历史版本保留的必要性也几乎没有。对于纯粹的博客来说,就更没有必要了,与其定期用数据库清理插件进行清扫,不如直接关掉:
- add_filter( ‘wp_revisions_to_keep’, ‘specs_wp_revisions_to_keep’, 10, 2 );
- function specs_wp_revisions_to_keep( $num, $post )
- { return 0; }
完成后保存,尝试编辑文章即可。 当然,如果你购买的是中大型服务器,仍出现这类问题,请检查防火墙日志。如果出现拒绝数据库访问的记录,请联系服务器提供商设置白名单。
更多禁用WordPress修订版本、自动保存、自动草稿的方法。
2、重启服务器(治标)
同样是因为修订文章、上传图片、读取标签等频繁访问和修改数据库而导致连接丢失,甚至500错误的时候,可采取重启服务器的方式。
在此之前,您可以把文章正文编辑完毕(上传图片功能不可用,如果使用图床就没问题),切换到文本编辑模式,复制文章的代码备份到本地txt文件。 之后重启服务器即可,重启完成后贴入代码,重新修改标签、分类等属性发布。 从文本编辑模式复制出的代码,也可以通过制作XML文件通过导入功能输入Wordpress。具体请参见Wordpress的工具→导入和工具→导出选项里的介绍(导出一份替换内容再导入即可)。
网上搜集的解决方案(三):排除插件
部分插件,以及访问第三方服务器的同步类插件会导致这个问题。目前发现的插件列表:
- WP-新浪登录插件
- 百度 Sitemap 插件
- WPJAM
- WP-QINIU
其他第三方同步/图床等服务也可能出现这个问题。
解决方法如下:
- 登陆FTP页面,打开/wp-content目录,将plugins文件夹改名为plugin。
- 登陆wordpress检查,若没有问题,将plugin内可能访问外网或涉及到缓存的插件移出,并改名回plugins。
- 逐个移回上述插件,测试问题。
请优先保障插件为最新版本或稳定版本,如果有涉及到网站外观的插件(比如Aksmet类和CSS类插件)请优先还原,以防网站外观改变。
网上搜集的解决方案(四):直接检查500错误
由于上述问题出现后,主机一般会进入10-30分钟的假死状态,在此期间访问会返回500错误(若为其他错误,如504错误,请检查网络问题和服务器运行状态)。利用这个500错误,可以深挖网站瘫痪原因。
1、登陆FTP页面,将根目录下的wp-config.php下载到本地并打开
2、更改define('WP_DEBUG', false);
为define('WP_DEBUG', true);
3、添加ini_set(‘display_errors’,’Off’);
4、保存,替换FTP内的wp-config.php文件,访问网站。
5、观察返还值,如出现Error establishing a database connection
,说明为数据库瘫痪,重启数据库即可解决。若为其他值可自行搜索错误原因。
6、解决问题后,还原wp-config.php文件。
网上搜集的解决方案(五):检查服务器状态/升级服务器
服务器状态会导致文章保存错误,或500错误。请进入主机管理界面,查看主机状态,主要检查内容包括:
- 网页空间、数据库空间的余量;
- 主机的CPU和内存的占用情况;
- 主机的流量余量。
说实在的,换个好主机,可以解决很多问题(……)。
我的情况和解决方案:
我的情况是没有安装过这些插件,也遇到这样的问题。到现在都还没有解决,如果有遇到同类问题的,欢迎留言一起讨论。爱绿豆也会在得到解决后第一时间更新解决方案。
2020-3-16更新:
解决方案:
1、更换缓存插件为W3 Total Cache
数据库大了对硬件的要求就高了,硬件不足情况下,只有使用更高级缓存插件减轻硬件压力。启用新缓存插件先关闭以前的缓存插件。W3 Total Cache设置教程可以参考网上
2、修改php内存
根据数据库日志,应该是php或mysql宕机产生的。如果php频繁宕机可以在php.ini修改memory_limit的值,调大点,然后重启php服务。如果再宕机继续调整,通常PHP内存不超过服务器的四分之一,建议调整为320M。