0

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

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

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

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

4

1 回答 1

0

您应该查看 yourhttpd.conf或 your.htaccess并找到一个名为的设置keepalivetimeout并将其设置为minimum not 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: %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);

?>

于 2013-09-28T00:47:51.857 回答