我正在寻找一种比较价值的更有效方法。
这就是我在做什么。我解析日志并将值存储在数据库中,每个值大约为500个字符。它基本上做的是将错误存储在日志中,所以当我读下一封电子邮件时,我会检查错误是否与之前的错误相同。如果是我将他们组合在一起。
所以每当我遇到一个独特的错误时,它都会存储在错误表中。
每读取一封新电子邮件,我会提取错误的500个字符,比较它是否相同或接近(通常是95%),如果是同样的错误则存储email_id
和{{1}在名为error id
的链接表中。我还在电子邮件表中存储了更多细节,但这些细节并不相关。
所以我想说我有5封电子邮件
电子邮件1是error_link
电子邮件2是error1
电子邮件3是error2
电子邮件4是error1
电子邮件5为error3
在第一个循环中,它会将error2
添加到错误表中。
电子邮件1:在错误表格中,我设置了error 1
,error_id=1
。在error_text="error1"
表中,我设置了error_link
,email_id=1
。
电子邮件2:在错误表格中,我设置了error_id=1
,error_id=2
。在error_text="error2"
表中,我设置了error_link
,email_id=2
。
电子邮件3:在错误表格中我没有做任何事情,因为我发现与error_id=2
匹配。在error_id=1
表中,我设置了error_link
,email_id=3
。
电子邮件4:在错误表格中,我设置了error_id=1
,error_id=3
。在error_text="error3"
表中,我设置了error_link
,email_id=4
。
电子邮件5:在错误表格中我没有做任何事情,因为我发现与error_id=3
匹配。在error_id=2
表中,我设置了error_link
,email_id=5
。
我使用的代码从当前500字符的电子邮件中抓取代码段,然后遍历错误表并运行此脚本:
error_id=2
现在的问题是,查询非常繁重,特别是当查询变大时,我有时会得到similar_text($snippet_new_pre, $snippet_text, $similar_percent);
if ($similar_percent > 95)
{
echo "We have a match";
}
。
我尝试将其设置为PHP Fatal error: Maximum execution time of 20 seconds exceeded
并且它有所帮助但有时会卡住。我不确定是否会发生这种情况,因为整个脚本中包含的时间超过了该时间,或者如果下面是1个查询的实际代码。
0
确实是指那一行,我想知道我是否只是在更少的电子邮件中更频繁地执行查询它是否会修复它或者我是否需要改进实际查询本身并使其变得更聪明?
如果我必须做出更好的查询而不是减少角色的大小,它会比较任何想法,我想只在前100个字符上运行查询,如果它有> 60%然后运行完整的500个字符查询,因此对那些不匹配但不确定这是否有帮助的计算的计算要少得多。