你应该有见过之前发过的无意义评论拦截,用的是preprocess_comment钩子,事实上它的执行会比子比的百度API判断晚,会先执行API验证,再走你的正则验证,这仅仅是做到了拦截无意义,没有节省API资源消耗。
正确的做法应该是替换zib_ajax_submit_comment函数,在API验证之前添加你的正则,违禁词判断等,这样可以先API一步拦截,节省等待API时间,也节省API资源消耗。
还有一件事,关于违禁词判断,如果你有开发能力,我建议你使用其它语言开发这个功能,别用PHP,PHP的遍历是很慢的,况且还要用分词,这很消耗内存,限制内存也会减慢速度。这种高消耗,最佳就是用二进制程序,然后推荐的语言是C/C++,Golang,Rust,Java,Python,最次才是PHP,同时要将词库加载到内存中。例如使用Golang打包好的程序,上万词库,10个字的句子,执行一次需要50微秒,理论上讲就是上万并发,PHP跑一次可能需要几秒,这对比PHP就是一个天一个地。
展示一代,使用一代,研发一代
我之前发的就是纯PHP版本的(估计你们可以在各种站看到无意义内容拦截代码,那个帖子被我删了),只有直接遍历,没结巴分词,不仅慢,并且Java都能被判定为违禁词,且被刷评论会很卡,给你站弄宕机都有可能。
之前我在用的是redis缓存结果,结巴分词版本的拦截,这样会快很多,没资源消耗压力了。
最近做了Go版本的,挺好用的,那叫一个舒适,根本不用缓存结果,并发,速度都杠杠的。
有空我会分享PHP分词redis版本的,Go版本的也简单,自己开发,或者找人开发。





