帮学校迎新晚会做了个上墙的应用。

AF8A83EB-8DFA-464B-855B-D9BCACC82417.png

现在有个问题就是用户一个提交之后,后端需要请求两三个外部接口来过滤垃圾信息,然后返回提交成功。第三方接口造成的时间开销太大!用户需要等四五秒才能看到提交成功。

优化方案是使用消息队列(任务队列):用户提交后存入数据库、内存或者文件上的一个队列,然后另一个进程去监控这个队列,发现有更新后去执行一些操作比如过滤什么的,然后将结果存入数据库。

有点像本博客的邮件评论系统,但是评论系统时效性不高,所以使用的是三十分钟一次的计划任务。而一个上墙应用不可能让用户等待那么久才看到自己的发言。用秒级的计划任务明显不现实,所以需要一个监控进程。

但是这涉及到PHP的异步操作,方面网上资料好难找啊。而且使用消息队列的项目都是非常大的数据量,资料中什么读写分离负载和均衡之类的,有点大材小用的感觉。学习成本有点高。

现在想到个折中的办法就是前端分割请求,后端分步骤处理数据。先ajax请求一个接口进行关键字省察,后端返回结果,前端显示关键字省察成功。然后ajax下一个请求……

这个的好处就是用户不会对着“提交中”三个字干等。缺点也很明显,会产生更多的请求。

标签: none