2017-06-16 32 views
0

我的搜索查询出现问题,输入搜索多次后该网站崩溃,我不确定是否由于缺乏我在GoDaddy支付的RAM或如果我的搜索查询引发错误或需要太多资源。MYSQLI搜索查询崩溃GoDaddy网站服务器

请您可以测试这里的搜索:http://cameras.specced.co.uk

请输入几个不同的相机型号,并做几次,搜索查询便会停止工作,该网站将不再工作。

下面是搜索查询:

$model_search_query = $cameras_pdo->prepare("SELECT * FROM models WHERE concat_ws(' ',brand_name,model) LIKE :search LIMIT 5"); 
$model_search_query->execute(array(':search' => "%" . $_POST['search'] . "%")); 

while ($model_search = $model_search_query->fetch(PDO::FETCH_ASSOC)) { 
    $brand_search_query = "SELECT brand FROM brands WHERE id =" . $model_search['brand']; 
    $brand_search = mysqli_fetch_assoc(mysqli_query($cameras, $brand_search_query)); ?> 

     <a href="compare.php?compare_1=<?php echo $model_search['id'];?>"> 



     <div class="search_result"> 
      <div class="search_result_image"> 
       <!-- IMAGE REMOVED TO TEST IF THIS WAS CAUSING THE ISSUE --> 
      </div> 

      <div class="search_result_text"> 
       <?php echo $brand_search['brand'] . " " . $model_search['model']; ?> 
      </div> 
     </div> 
    </a> 
<?php } ?> 

我已经从搜索结果只是柜面它是太大,太多的被装载在下拉式搜寻的同时去除图像造成的问题,但是网站在搜索几次后仍然崩溃。

这是我收到Safari中的错误,

Safari不能打开....因为服务器意外下降的任何帮助

编辑连接...

三江源:

这里是我的fetch.php的所有内容,包含在AJAX中,当用户搜索标题右上角的搜索栏时,http://cameras.specced.co.uk

<?php ini_set('display_errors', 'On'); ?> 

<!-- REQUIRE DB --> 
<?php 
    $servername = "xxx"; 
    $username = "xxx"; 
    $password = "xxx"; 
    $dbname = "xxx"; 
?> 
<?php 
    $cameras = mysqli_connect($servername, $username, $password, $dbname); 

    $cameras_pdo = new PDO('mysql:host=xxx;dbname=xxx', 'xxx', 'xxx'); 
?> 


<?php 


    $model_search_query = $cameras_pdo->prepare("SELECT * FROM models WHERE concat_ws(' ',brand_name,model) LIKE :search LIMIT 5"); 
    $model_search_query->execute(array(':search' => "%" . $_POST['search'] . "%")); 

    while ($model_search = $model_search_query->fetch(PDO::FETCH_ASSOC)) { 
     $brand_search_query = "SELECT brand FROM brands WHERE id =" . $model_search['brand']; 
     $brand_search = mysqli_fetch_assoc(mysqli_query($cameras, $brand_search_query)); 
p?1=' . $_POST['current'] . "&2=" . $model_search['id'] . '">'; 

      echo '<a href="compare.php?compare_1=' . $model_search['id'] . '">'. 

      '<div class="search_result">' . 
       '<div class="search_result_image">' . 
        '<img src="http://www.specced.co.uk/images/cameras/[' . $model_search['id'] . ']_front.png">' . 
       '</div>' . 

       '<div class="search_result_text">' . 
        $brand_search['brand'] . " " . $model_search['model'] . 
       '</div>' . 
      '</div>' . 
     '</a>'; 
    } 

?> 
+0

任何人,我很想得到这个排序 – cousbrad

回答

0

当网站停止响应,如果您检查开发者控制台在浏览器网络面板,并检查从fetch.php的反应,你会看到最后一个HTTP 200响应仅包含以下内容:

<!-- REQUIRE DB --> 

后续请求为空。因此,我猜PHP在尝试进行数据库连接时会死亡。检查你的error_log并在这里发表你的错误作为评论!完成后您是否关闭数据库连接?

+0

我也注意到,如果你等一会儿,它又开始工作,所以它就好像你的数据库达到了最大连接限制。也许值得调查。 – delboy1978uk

+0

嗨,不,我不关闭数据库连接,我在我的问题中添加的代码是一个单独的PHP文件包含在Ajax中,顶部是一个开放的PDO连接,但是我不关闭连接的底部文件...我没有这个必要的东西? – cousbrad

+0

通常情况下不是,但在这种情况下这样做可能是值得的。 – delboy1978uk