这是一个正常的客户端发送一个AJAX请求到服务器,而不使用任何库。
关于数据库:
DB中只有一个表有2列和2行。 InnoDB的存储引擎
注意 :这是一个testing数据库。 我也有另外一个数据库有4个表5000-6000logging和18个其他表less于500个logging
client.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>
server.php (CASE#1):没有连接查询到数据库
<?php // $con = mysqli_connect("host","username","pass","test_db"); echo json_encode([ 'success' => true ]); exit();
(响应需要〜59ms)
server.php (CASE#2):连接查询到数据库
<?php $con = mysqli_connect("host","username","pass","test_db"); echo json_encode([ 'success' => true ]); exit();
(响应需要〜452ms;这不应该发生,直到一个星期前才发生)
为什么如果将该连接线包含到数据库中,响应时间很长?
编辑:(只是把如果它会有助于更好地理解)
当我运行SHOW PROCESSLIST; 当客户端发送AJAX请求时,我看到这个,
SHOW PROCESSLIST的结果
从进程列表看来,它不是本地数据库,即不在本地主机上,而且您不使用本地主机或127.0.0.1访问它。
因此它可能是networking或DNS相关的问题。 检查DNS解决问题和networking延迟问题。
如果数据库服务器位于同一主机上,并且您在连接string中使用本地主机,则尝试将其更改为127.0.0.1