[英]ajax continuous update php causing server to block my 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脚本:
<?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;
?>
在此先感谢您的帮助。 对不起,我的英语不是很好。
也许吧,但我认真地认为每秒查询您的服务器完全是不必要的,而且浪费资源(除非您有非常强迫的客户),使您的脚本每分钟左右查询一次更好,并且可能在如果您有多个客户从同一服务器使用此应用程序,则表示长期。
如果您真的认为拥有此功能是必要的,那么一种很好的方法是使用Push通知,有关更多信息,请参见: PHP-Push Notifications ,此处:将通知推送到客户端浏览器,以及以下内容: 使用PHP / JavaScript 。
当用户执行操作时,为什么不更新购物车呢?
例如“将商品添加到购物车”?
这样,仅在实际需要时才调用服务器。
正如我在评论中所述,您在这里有几种选择。
基本上,第一个是放松查询。 您不需要长时间轮询这样的事情。 将查询下调为每5分钟一次或仅在有操作时才下调。
您还可以构建一个简单的彗星服务器,以在从服务器“推送”更新时执行推拉式操作。 有一个预建的APE: http : //www.ape-project.org/
另外,node.js可以为您处理这种事情。
另外,您可能应该研究服务器设置,听起来有点奇怪,您的服务器阻止了它自己的IP地址/域...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.