ajax连续更新php导致服务器阻止我的ip

ajax连续更新php导致服务器阻止我的ip,php,ajax,Php,Ajax,我正在使用一个Ajax函数,并对其自身进行调用,以不断更新信息。但我让脚本运行了一段时间,然后服务器阻止了我的IP,因为它认为我正在淹没它或类似的东西,我不知道。不管怎样,我想知道是否有其他方法可以更恰当地做到这一点。这是我的密码: Ajax函数: function update_cart() { if (window.XMLHttpRequest) var http = new XMLHttpRequest(); else var http = new ActiveXObjec

我正在使用一个Ajax函数,并对其自身进行调用,以不断更新信息。但我让脚本运行了一段时间,然后服务器阻止了我的IP,因为它认为我正在淹没它或类似的东西,我不知道。不管怎样,我想知道是否有其他方法可以更恰当地做到这一点。这是我的密码:

Ajax函数:

function update_cart()
{
if (window.XMLHttpRequest)
    var http = new XMLHttpRequest();
else
    var http = new ActiveXObject('Microsoft.XMLHTTP');

http.onreadystatechange=function()
                       {
                           if ((http.readyState == 4) && (http.status == 200))
                           {                                   
                                id('cart_quantity').innerHTML = parseInt(http.responseText);
                                setTimeout('update_cart()', 1000);
                           }
                       }

http.open('GET', actual_path+'fetch_cart_quantity.php', true);  
http.setRequestHeader("X-Requested-With", "XMLHttpRequest");
http.send();        
}
<?php
if($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest')
{
    header('Location: ./');
    exit();
}

session_start();

include '../include/config.php';
include '../include/db_handler.php';
include '../include/cart_handler.php';      

$cart = get_cart_quantity($_SESSION['cart_id']);
if ($cart == NULL) $cart = 0;

echo $cart;
?>
PHP脚本:

function update_cart()
{
if (window.XMLHttpRequest)
    var http = new XMLHttpRequest();
else
    var http = new ActiveXObject('Microsoft.XMLHTTP');

http.onreadystatechange=function()
                       {
                           if ((http.readyState == 4) && (http.status == 200))
                           {                                   
                                id('cart_quantity').innerHTML = parseInt(http.responseText);
                                setTimeout('update_cart()', 1000);
                           }
                       }

http.open('GET', actual_path+'fetch_cart_quantity.php', true);  
http.setRequestHeader("X-Requested-With", "XMLHttpRequest");
http.send();        
}
<?php
if($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest')
{
    header('Location: ./');
    exit();
}

session_start();

include '../include/config.php';
include '../include/db_handler.php';
include '../include/cart_handler.php';      

$cart = get_cart_quantity($_SESSION['cart_id']);
if ($cart == NULL) $cart = 0;

echo $cart;
?>


提前感谢你的帮助。很抱歉,我的英语不是很好。

很可能,但我认真地认为,每秒查询您的服务器是完全不必要的,也是一种资源浪费(除非您有非常强迫性的客户),如果您有多个客户从同一台服务器使用此应用程序,那么每隔一分钟左右编写一个脚本来查询您的服务器会更好,而且从长远来看可能会更好


如果您真的认为有必要使用此功能,一个好方法是使用推送通知,更多信息可以在此处找到:,此处:和此处:。

为什么不在用户执行操作时更新购物车呢

例如“将商品添加到购物车”


这样,您只需要在实际需要时调用服务器。

正如我在评论中所述,您在这里有几个选项

基本上,第一步是冷静下来进行查询。你不需要长时间调查这样的事情。将查询设置为每5分钟一次,或在有操作时进行查询

您还可以构建一个简单的comet服务器,以便在从服务器“推”下任何更新时执行推拉类型的操作。有一个预制的称为APE:

node.js也可以为您处理这类事情


此外,您可能还应该查看您的服务器设置,听起来有点奇怪,您的服务器正在阻止自己的IP地址/域…

comet server/node.js/etc有很多技术可以用来取代普通的AJAX,比如延迟的AJAX,每5分钟运行一次,而不是连续运行一次,另外,正确配置的server.use jquery将保存您的time@timmalos如果服务器是IP,则不会blocking@Sammaye:谢谢你的回复。我可以使用cpanel选项或一些.ini文件配置服务器吗?或者我必须联系我的服务提供商?5分钟是我最后的选择…@timmalos:jQuery能帮我解决这个问题吗?我确实打算有一天学习它。在StackExchange中搜索“推送通知php javascript”也会带来很多资源。谢谢。只是每次采取行动时,我都想更新每个打开的选项卡中的信息。服务器是我付费的服务,不是在我自己的电脑上。谢谢。只是每次采取行动时,我都想更新每个打开的选项卡中的信息。为了让它看起来很酷,我想…在我看来,这真的不值得。用户可能会期望其他选项卡不同步,因为这是大多数网站的常见行为。您仍然可以使用
setTimeout
,但如果您真的需要,可以将其设置为几分钟左右。。。。另一件需要注意的事情是,setTimeout()在用于失去焦点的选项卡时确实存在一些问题,因为它通常会将它们堆叠起来,然后在焦点返回时尽快激发它们。