ajax连续更新php导致服务器封锁我的ip

19 浏览
0 Comments

ajax连续更新php导致服务器封锁我的ip

我正在使用一个带有自我调用的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脚本:


先感谢您的帮助。对不起,我的英语不是很好。

0
0 Comments

这个问题的出现的原因是频繁的使用 Ajax 连续更新 PHP 导致服务器封锁了 IP 地址。解决方法可以有以下几种:

1. 减少查询频率,将查询时间间隔调整为每隔5分钟或者只在有动作时进行查询。

2. 构建一个简单的 Comet 服务器,实现服务器向客户端推送数据的功能。可以使用预先构建好的 APE 服务器,具体可以参考http://www.ape-project.org/

3. 使用 Node.js 来处理这种场景。

4. 检查服务器的设置,因为服务器封锁了自己的 IP 地址/域名,这可能是配置有问题。

总之,如果想要在每个打开的标签页中实时更新信息,可以通过减少查询频率、使用 Comet 服务器或者检查服务器设置来解决这个问题。

0
0 Comments

问题原因:频繁查询服务器会导致资源浪费,而且并不是必要的。

解决方法:将查询服务器的频率调整为每分钟一次,并使用推送通知的方式代替。

具体实现可以参考以下链接:PHP - Push NotificationsPush notification to the client browser以及Push notifications from server to user with PHP/JavaScript

在StackExchange中搜索"push notifications php javascript"可以获得更多相关资源。

0
0 Comments

问题的原因是使用ajax连续更新php导致服务器阻止了我的IP。

解决方法是当用户执行操作时,只在需要时调用服务器来更新购物车,而不是每次都更新。如果确实想要每次操作都更新信息,可以使用setTimeout函数,将时间间隔设为几分钟。需要注意的是,当标签失去焦点时,setTimeout函数会将其积累起来,然后在焦点返回时尽快触发它们。

0