故障描述:
自小站迁移后发现文章评论模块,当前用户评论其他用户时点击确认按钮无任何反应,其实后台已经评论回复成功,自己给自己回复则很快完成,并正常采用ajax不刷新页面自动显示新评论内容,有Jquery滑动效果。
故障分析:
评论系统是一个博客的灵魂所在,是博主和博友间的交流触手,它的好坏会极强的影响着用户体验。
遇到这个问题第一时间,想的是升级后不兼容的问题,因为迁移升级之前是好的。网上一顿查,看是否有同僚遇到同样的问题,最终也没有想要的答案。
开始以为只是ajax出现了问题,因为事实上后台评论时成功的,安装了几个其它评论系统插件、网上找了几个其它ajax评论的代码,尝试了很多次,最终并没有解决问题。
到底是因为什么呢?如果不是代码本身的问题,那么可能是机制或触发逻辑有问题导致卡在了某个环节,用F12查看页面,发现评论点击确认按钮后,其input在提交表单时,会请求comment-ajax.php页面,但其请求报文的“Rquest Headers”报如下错误:
provisional headers are shown
其导致了TTFB资源加载时间在不刷新页面的情况下,每提交一次,时间呈累加性质的增加。为什么这么说?因为我发现其并不是不会成功的出现ajax滑动效果显示新的评论内容,而是特别慢,不刷新页面的情况下,第一次评论可能5分钟,第二次就是10分钟,依次增加。
是什么导致这种情况发生呢?此时我更加确认是因为某个触发机制没有成功从而卡在了某个环节导致的。但是,导致是什么地方出现的问题,我也是百思不得其解,但答案总是在不经意之间出现在你面前,只要你不放弃。
折腾很长时间,终于在昨天深夜,我想到了一个因素,就是我的ajax评论还增加了评论回复发送邮件提醒的功能,是不是卡在了邮件上,想到便马上开始验证,很久没有登录用户邮箱,登上去已查看,果然从去年年底12月份左右就没有收到过任何的小站相关的邮件。
而后又经过一波三折,果然答案正确,并顺利解决了此次难题。
故障解决:
①、首先我使用mail命令在系统层面上进行验证客户端到服务端的环境状态,因为我迁移了主机。
在/etc/mail.rc文件中配置了smtp的邮件服务器信息,想往常一样,使用的是smtp.oxblog.cn的25端口。
但是这次竟然怎么都无法成功发送邮件,使用mailx -v参数查看时卡在了用户验证这块。
但大嘴用身家性命保证用户密码没有错,哪里出了问题?这很重要,因为我的小站用的是phpmailer实现邮件发送,迁移前就是这样的配置,如果mail验证不成功,评论回复的邮件都会发送不成功。
②、网上又是一顿猛搜,有个帖子引起我的注意,说是阿里的云邮箱服务器近期关闭了25端口的验证,需要使用smtp的465端口进行ssl加密验证才行,马上去实行之。
首先在mail.rc文件中添加:
set ssl-verify=ignore
set smtp=smtps://smtp.oxblog.cn
set nss-config-dir=/etc/pki/nssdb/
然后echo 123 | mailx -v -s 321 bigmouth@oxblog.cn , Bingo邮件发送成功了。
③、首先在php.ini文件中找到下面一行,并取消注释:
extension=php_openssl.dll
然后主题代码中配置,修改phpheader端口号为465,并使用ssl。
$phpmailer->Port = 465;
$phpmailer->SMTPSecure = 'ssl';
如此,回到评论页面,ajax评论如初,邮件回复也能正常收发了。
当然每个博友遇到的情况可能有所不同,我的这次故障就是ajax评论卡在了邮件收发的问题上了,仅以此提供一个可能的思路。
***************当你发现自己的才华撑不起野心时,就静下心来学习吧***************