2016-02-06 4 views
0

Я создал мгновенный поиск базы данных MYSQL с использованием php и jquery. поиск работает правильно, пока я не удалю некоторые термины поиска по ключевым словам и не начну поиск снова. После того как поисковые запросы удаляются пользователем, результаты поиска больше не возвращаются, как ожидалось. Как только это произойдет, если я обновляю страницу, я получаю сообщение «без данных» из браузера, и сайт не выходит в сеть снова в течение минуты или около того. Чтобы увидеть, что я имею в виду, вы можете перейти на www.partsearch.club .. некоторые из ключевых слов, которые можно использовать, - это «decora connector wet bx tek tk». Если вы продолжите добавлять и удалять условия поиска, вы увидите, что я имею в виду. Вот мой кодphp мгновенный поиск crashing

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

Попробуйте добавить 'ini_set ('display_errors', 1); ini_set ('display_startup_errors', 1); error_reporting (-1); 'в начало вашего скрипта, сообщаются ли какие-либо ошибки? – DelightedD0D

ответ

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 или где-то еще.

Смежные вопросы