ajax连续更新php导致服务器封锁我的ip
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脚本:
先感谢您的帮助。对不起,我的英语不是很好。
这个问题的出现的原因是频繁的使用 Ajax 连续更新 PHP 导致服务器封锁了 IP 地址。解决方法可以有以下几种:
1. 减少查询频率,将查询时间间隔调整为每隔5分钟或者只在有动作时进行查询。
2. 构建一个简单的 Comet 服务器,实现服务器向客户端推送数据的功能。可以使用预先构建好的 APE 服务器,具体可以参考http://www.ape-project.org/。
3. 使用 Node.js 来处理这种场景。
4. 检查服务器的设置,因为服务器封锁了自己的 IP 地址/域名,这可能是配置有问题。
总之,如果想要在每个打开的标签页中实时更新信息,可以通过减少查询频率、使用 Comet 服务器或者检查服务器设置来解决这个问题。
问题原因:频繁查询服务器会导致资源浪费,而且并不是必要的。
解决方法:将查询服务器的频率调整为每分钟一次,并使用推送通知的方式代替。
具体实现可以参考以下链接:PHP - Push Notifications、Push notification to the client browser以及Push notifications from server to user with PHP/JavaScript。
在StackExchange中搜索"push notifications php javascript"可以获得更多相关资源。