这是一个普通的客户端向服务器发送 AJAX 请求,没有使用任何库。
关于数据库:
数据库中只有 1 个表,包含 2 列和 2 行。InnoDB
笔记:这是一个测试数据库。我还有另一个数据库,其中有 4 个表,每个表有 5000-6000 条记录,另外还有 18 个表,每个表有少于 500 条记录
客户端.php:
<html>
...
<body>
<button class="btn__">Send</button>
<script>
var btn = document.querySelector('.btn__');
btn.onclick = function()
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
// document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
}
};
xmlhttp.open("POST", "server_files/server.php", true);
xmlhttp.send();
}
</script>
</body>
...
</html>
服务器.php (案例 #1):没有与数据库的连接查询
<?php
// $con = mysqli_connect("host","username","pass","test_db");
echo json_encode([
'success' => true
]);
exit();
(响应时间约需 59 毫秒)
服务器.php (案例 #2):数据库连接查询
<?php
$con = mysqli_connect("host","username","pass","test_db");
echo json_encode([
'success' => true
]);
exit();
(响应时间约为 452 毫秒;这种情况不应该发生,而且直到一周前才发生)
如果我将该行连接包含到数据库,为什么响应需要很长时间?
编辑:(只是说是否有助于更好地理解)
SHOW PROCESSLIST;
当我在客户端发送 AJAX 请求时运行时,我看到了这一点,
答案1
从进程列表来看,它似乎不是一个本地数据库,即不在本地主机上,并且您没有使用本地主机或 127.0.0.1 访问它。
因此,这可能是网络或 DNS 相关问题。请检查 DNS 解析问题和网络延迟问题。
如果数据库服务器位于同一主机上,并且您在连接字符串中使用 localhost,则尝试将其更改为 127.0.0.1