我使用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('');
}
});
答案 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或其他地方。