我仍在学习使用 ajax 进行长轮询,并从本文中找到了一些示例并管理代码来执行此操作:
function poll() {
var email = 'foo@yahoo.com';
$.ajax({
type: "post",
url: "testlongpolling.php",
data: "email="+email,
dataType:'json',
complete: poll,
timeout: 30000,
success: function(result){
if(/(yes)/.test( result.status ))
{
$('#status').html(result.name);
}
else
{
$('#status').html(result.name);
}
}
});
}
但是,在此代码运行后不久,我有一长串错误消息,告诉数据库无法连接:
警告:mysql_connect() [function.mysql-connect]:[2002] 在第 2 行的 C:\xampp\htdocs\mynewproject\db_connection.php 中,每个套接字地址(协议/网络地址/(尝试通过 tcp://localhost:3306 连接)只有一个用法
之后,我无法在本地主机中打开phpMyAdmin(我必须重新启动计算机)。
任何人都可以指出我与数据库保持良好连接以进行长时间轮询的更好方法,或者如何在 ajax 超时用完并自行重复之前清除/停止成功回调中的 ajax 调用?
任何建议非常感谢,谢谢。
查看您的httpd.conf
或.htaccess
,找到一个名为keepalivetimeout
的设置并将其设置为minimum
而不是maximum
。之后重新启动本地服务器。如果它不存在于任何一个文件中,则需要将其添加到其中。(阅读更多)
现在对于您的数据库处理,您可能应该使用像 mysqli 这样的类,因为 mysql 的开发正在停止。
<?php
// Start new mysqli
$mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
// Check if the connection failed
if (mysqli_connect_errno()) {
printf("Connect failed: %sn", mysqli_connect_error());
exit();
}
// Run a query
$query = "SELECT * FROM `users` WHERE `$email`='$email'";
$result = $mysqli->query($query) or die($mysqli->error . __LINE__);
// Loop through the data
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo stripslashes($row['username']);
}
} else {
echo 'NO RESULTS';
}
// CLOSE CONNECTION
mysqli_close($mysqli);
?>