gpt4 book ai didi

PHP搜索功能让我的网站崩溃

转载 作者:行者123 更新时间:2023-11-30 21:56:27 25 4
gpt4 key购买 nike

我只是创建了一个具有搜索功能的网页,在每次搜索中我都有一个数据库查询,可以返回建议。但是当我触发这个 onkeyup 函数太多次(我的意思是 10-20 次)因为它在尝试时一次又一次地被触发,在太多次触发网站崩溃并给我一个错误页面,标准的谷歌杂务错误页面(不是 php解释错误的错误页面)1 分钟后,一切正常。你有什么想法吗?

谢谢。

这是我的 JS 代码

    var timer;
$('#search').keyup(function(e){
timer = setTimeout(function(){
var searchname = $('#search').val();
$.ajax({
url:"php/fetchsuggest.php",
type:'POST',
data:{searchname:searchname},
success: function(data){
$('#fetch').show();
$('#fetch').html(data);

//select fetch as val
$('.fetched').click(function(){
var innerval=$(this).text();
$('#search').val(innerval);
$('#fetch').hide();
$('#search').focus();
});
}
});
},300);
});

最佳答案

@apokryfos 的评论完全正确。

您的 onkeyup 事件处理程序以某种方式启动 MySQL 查询:可能是通过从用户浏览器到您的 php 页面的 ajax 样式请求。然后,在 MyQL 查询有机会完成并将其结果集返回给浏览器之前,下一个事件处理程序开始另一个查询。

一旦 MySQL 查询开始(在通常的 php 实现中),它就会运行完成。即使用户在查询过程中关闭浏览器到 php 的连接也是如此。如果您的用户能够快速启动许多查询——通过快速键入——这些查询将堆积在 MySQL 服务器中,直到耗尽资源。

这里可能存在恶性循环。用户认为“也许我的请求没有通过”并再次点击,开始另一个请求。

jQueryUI 自动完成小部件有一个 delay 参数来控制发送请求的频率。 http://api.jqueryui.com/autocomplete/#option-delay根据我的经验,一到两秒的设置会产生高质量的用户体验。您可能会发现使用这样的小部件很有帮助;其他人已经调试了用于延迟的 javascript 超时的复杂性。

关于PHP搜索功能让我的网站崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44995583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com