我的搜索查询有问题,在多次输入搜索后,网站崩溃了,我不确定这是由于我在 GoDaddy 购买的 RAM 不足还是我的搜索查询抛出了错误错误或需要太多资源。
请您在此处测试搜索: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 无法打开...因为服务器意外断开连接...
感谢您的帮助
编辑:
这是当用户在标题中的右上角搜索栏 http://cameras.specced.co.uk 进行搜索时,AJAX 包含的 fetch.php 的全部内容。
<?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>';
}
?>
最佳答案
当网站停止响应时,如果您检查浏览器网络面板中的开发人员控制台并检查 fetch.php 的响应,您将看到最后一个 HTTP 200 响应仅包含以下内容:
<!-- REQUIRE DB -->
后续请求为空。因此,我猜测 PHP 在尝试建立数据库连接时会死掉。检查您的 error_log 并将您的错误作为评论发布在这里!完成后是否关闭数据库连接?
关于php - MYSQLI 搜索查询使 GoDaddy 网站服务器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44585864/