php 即时搜索崩溃

标签 php jquery mysql search

我使用 php 和 jquery 创建了 MYSQL 数据库的即时搜索。搜索功能正常,直到我删除一些关键字搜索词并再次开始搜索。一旦用户删除搜索词,搜索结果将不再按预期返回。一旦发生这种情况,如果我刷新页面,我会从浏览器收到“未收到数据”消息,并且该网站在一分钟左右的时间内不会再次上线。为了明白我的意思,您可以访问 www.partsearch.club .. 可以使用的一些关键字是“decora Connector wet bx tek tk”。如果您继续添加和删除搜索词,您就会明白我的意思。这是我的代码

index.php

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Instant Search Tutorial</title>
</head>

<body>
<script type="text/javascript" src="js/jquery.js"></script>
<br />
<br />
<br />
<br />
<br />
<br />
<center><input type="text" id="search" placeholder="Search..." size="50"><br />
</br>
<form><input type=button value="Refresh" onClick="history.go()"></form>    </center><br />
<div id="searchresults"></div>
<script type="text/javascript" src="js/search.js"></script>
</body>
</html>

搜索.php

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Instant Search Tutorial</title>
</head>

<body>
<?php

$username = "xxxx";
$password = "xxxxx";
$hostname = "localhost"; 


mysql_connect($hostname, $username, $password); 
mysql_select_db("wesco");

$searchArray = explode(" ", $_POST['searchterm']);
$query = "";
foreach($searchArray as $val) {
$search = mysql_real_escape_string(trim($val));
if (!empty($query)) {
    $query = $query . " AND "; // or AND, depends on what you want
}

$query = $query . "`keywords` LIKE '%$search%'";
}

if (!empty($query)) {
$find_parts = mysql_query("SELECT * FROM `parts` WHERE $query");
}

while($row = mysql_fetch_assoc($find_parts))
{
$name = $row['name'];

echo "<center>$name</center><br />";
}

?>
</body>
</html>

搜索.js

$('#search').keyup(function()
{
var searchterm = $('#search').val();

if(searchterm!='')
{
    $.post('search.php',{searchterm:searchterm},
    function(data)
    {
        $('#searchresults').html(data);
    });
}
else
{
    $('#searchresults').html('');   
}
});

最佳答案

您是否使用任何防火墙,或者在 apache 前面使用 varnish 或反向代理?您是否在 apache 设置中的任何位置对请求量设置了速率限制?我尝试通过执行多个自动完成请求来使服务器重载,并最终被阻止,但是在同一时刻,我从另一个 IP 上的另一个盒子进行尝试,并得到了正确的答案:

curl -X GET -I http://www.partsearch.club/
HTTP/1.1 200 OK
Date: Sat, 06 Feb 2016 01:42:05 GMT
Server: Apache/2.4.16
X-Powered-By: PHP/5.4.45
Transfer-Encoding: chunked
Content-Type: text/html

所以这表明服务器并没有对每个人都宕机,而是我被阻止了几秒钟,可能是由于 Apache 或服务器中可能有的任何 Ddos 保护。我建议尝试使用 nginx 或 litespeed 作为网络服务器,以检查问题是否出在 Apache 或其他地方。

关于php 即时搜索崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35236293/

相关文章:

php - 通知图标点击后隐藏号码

php - 在 Apache 中运行 Django 和 PHP 应用程序

php - 选择字段时不会加载关联

Jquery .css() 方法不适用于 css 函数

javascript - indexOf 不是 jQuery grep 中数组上的函数

Mysql 用聚合和注释表

PHP - 复选框值以编辑形式显示在文本框中

php - PHP中是否有类似NEGATIVE_INFINITY的东西?

jquery - 为什么选择/取消选择复选框在 jQuery 中只能工作一次?

mysql - 慢 SQL INNER JOIN