【问题标题】:Database error when executing long polling AJAX执行长轮询 AJAX 时出现数据库错误
【发布时间】:2013-09-28 00:28:57
【问题描述】:

我仍在学习使用 ajax 进行长轮询,并从这篇文章 here 中找到几个例子来做到这一点并管理代码来做到这一点:

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] C:\xampp 中的每个套接字地址(协议/网络地址/(尝试通过 tcp://localhost:3306 连接)仅使用一次\htdocs\mynewproject\db_connection.php 在第 2 行

之后我无法在本地主机中打开 phpMyAdmin(我必须重新启动计算机)。

谁能告诉我更好的方法来保持与数据库的良好连接以进行长轮询,或者如何在 ajax 超时用完并自行重复之前清除/停止成功回调中的 ajax 调用?

非常感谢任何建议,谢谢。

【问题讨论】:

  • 你的 php 文件是什么样的?帮助我们解决问题。
  • 这是我的 php 代码:members WHERE email='$email'"; $r = mysql_query($q); $d = mysql_fetch_array($r); $nt = $d['name']; if($nt == '') { echo '否'; } 其他 { 回声“是”; } ?>
  • db_connection.php 的代码是什么,这似乎是错误的来源。
  • 这是我的数据库连接代码:

标签: jquery ajax database long-polling


【解决方案1】:

您应该查看您的httpd.conf.htaccess 并找到一个名为keepalivetimeout 的设置并将其设置为minimum 不是 maximum。 之后重新启动本地服务器。如果这两个文件中都不存在,则需要将其添加到其中。 (Read More)

现在对于您的数据库处理,您可能应该使用像 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: %s\n", 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);

?>

【讨论】:

  • 嗨,@dbh 感谢您的回答。我设法在 httpd.default.conf 中找到“KeepAliveTimeout”设置,但它说我必须输入数字,而不是字符串“最小值”。你能告诉我应该输入什么数字吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-26
  • 2012-11-18
  • 2016-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多