今天在验证用户所发表文章是否已经存在于数据库, 就想到了用PHP计算两字符串的相似度来处理,于是就在数据入库前进行了处理。 用到函数similar_text() 代码如下: $ret = 0; $r = $db->select("select content from article"); foreach ($r as $val){ similar_text($message,$val[content], $ret); if($ret>=50){ echo "文章已经存在,请不要重复发表"; break; } } 加入上面代码后运行,发现总是超时。 于是在代码中打印重要语句的执行时间 时间大概是这样的: 查询数据库是0.4秒,比较一条相似度是0.1秒。 后来计算了一下,也就300条记录,PHP默认执行的30秒时间就不够了。 何况数据库存的文件不是300,可能是3000,3万条。 看来是不能添加这一功能了。 如果非要加上这一功能,也只能放在后台实现了。 在后台把PHP执行时间设长一点,就是用户发表的文章再慢慢去查询。 不过这样也不现实,随着数据越来越多,执行时间越来越长。 下面是该函数的详细信息: similar_text 参数 最后介绍执行速度更快的函数levenshtein(),大家可以试试的。 |