使用php / mysql实时搜索防止多个同时查询

时间:2011-08-04 18:06:17

标签: php mysql ajax search

我有一个有效的实时搜索系统。但是,如果用户输入的速度比返回结果的速度快,那么服务器上的搜索查询的许多版本都会同时运行,这常常会遇到这样的问题。

我正在中止一个新的ajax请求,但这当然不会影响服务器上正在进行的查询,最终会遇到严重的瓶颈和漫长的等待以获得最终结果。我正在使用带有MyISAM表的MySQL,并且转换到InnoDB似乎没有任何优势,因为结果集将是理智的行。

我尝试使用会话变量让php等待,如果此会话已经有正在进行的查询但似乎完全停止了它。

如果我使ajax请求同步,问题就解决了,但这样做会在这里击败对象。

我想知道是否有人对如何正常工作有任何建议。

祝你好运 约翰

1 个答案:

答案 0 :(得分:2)

在做更复杂的事情之前,您是否考虑过在用户停止输入至少一定时间间隔(比如1秒)之前不发送请求?这应该会大大减少你所做的请求数量。