php即时搜索崩溃

时间:2016-02-06 01:34:21

标签: 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>

的search.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>

search.js

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

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

1 个答案:

答案 0 :(得分:1)

您是否正在使用任何防火墙,或者在apache前使用清漆或反向代理?您是否在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或其他地方。