繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM