PHP fsockopen脚本在ajax上超时,但在命令行中几乎立即完成

PHP fsockopen脚本在ajax上超时,但在命令行中几乎立即完成,php,ajax,fsockopen,Php,Ajax,Fsockopen,我正在尝试在另一台服务器上创建一个网页,其中将显示我自己服务器的状态。 我使用的AJAX请求如下: $.ajax({ url: 'status.php', data: {ip:address}, success: function(data){ //do stuff }, dataType:'text' }); if($_GET['ip']){ $ip = $_GET['ip']; //var_dump($_GET['ip

我正在尝试在另一台服务器上创建一个网页,其中将显示我自己服务器的状态。 我使用的AJAX请求如下:

$.ajax({
    url: 'status.php',
    data: {ip:address},
    success: function(data){
        //do stuff
    },
    dataType:'text'
});
if($_GET['ip']){
    $ip = $_GET['ip'];
    //var_dump($_GET['ip']); 
    $port = 64738;
    $up = fsockopen("tcp://$ip", $port, $errno, $errstr, 30);   
    if($up){   
        echo "success";   
    } 
    else{ 
        echo "failure";
} 
$ip = "<ip_of_my_server>"; 
    $port = 64738;
    $up = fsockopen("tcp://$ip", $port, $errno, $errstr, 5);   
    if($up){   
        echo "success";   
    } 
    else{ 
        echo "failure";
    }
要将服务器的ip地址发送到status.php脚本,如下所示:

$.ajax({
    url: 'status.php',
    data: {ip:address},
    success: function(data){
        //do stuff
    },
    dataType:'text'
});
if($_GET['ip']){
    $ip = $_GET['ip'];
    //var_dump($_GET['ip']); 
    $port = 64738;
    $up = fsockopen("tcp://$ip", $port, $errno, $errstr, 30);   
    if($up){   
        echo "success";   
    } 
    else{ 
        echo "failure";
} 
$ip = "<ip_of_my_server>"; 
    $port = 64738;
    $up = fsockopen("tcp://$ip", $port, $errno, $errstr, 5);   
    if($up){   
        echo "success";   
    } 
    else{ 
        echo "failure";
    }
我把剧本改写成这样:

$.ajax({
    url: 'status.php',
    data: {ip:address},
    success: function(data){
        //do stuff
    },
    dataType:'text'
});
if($_GET['ip']){
    $ip = $_GET['ip'];
    //var_dump($_GET['ip']); 
    $port = 64738;
    $up = fsockopen("tcp://$ip", $port, $errno, $errstr, 30);   
    if($up){   
        echo "success";   
    } 
    else{ 
        echo "failure";
} 
$ip = "<ip_of_my_server>"; 
    $port = 64738;
    $up = fsockopen("tcp://$ip", $port, $errno, $errstr, 5);   
    if($up){   
        echo "success";   
    } 
    else{ 
        echo "failure";
    }
$ip=”“;
$port=64738;
$up=fsockopen(“tcp://$ip”,$port,$errno,$errstr,5);
如果($up){
呼应“成功”;
} 
否则{
呼应“失败”;
}
所以我可以从命令行使用它,用于测试目的

第二个脚本可以在命令行中完美且几乎即时地工作,并输出“success”

但是对于AJAX请求,第一个和第二个脚本都会给出errornr。fsockopen输出在30秒后为110(连接超时),因此输出为“故障”

原因可能是什么?
提前谢谢

防火墙规则?您正在windows上测试?谢谢您的评论!就我所见,在两台服务器上都没有为该特定端口阻止任何内容。此外,诸如和nmap等站点也确认端口已打开。这两台服务器都运行Linux,使用AJAX进行测试的方法是转到发送它的网页(在Windows上的Google Chrome上)。问题的症状是阻止了传出连接。在windows(dev env)中,我遇到了类似的问题,因为防火墙会阻止每个进程的所有传出连接。可能允许使用php(cli),但不允许使用Web服务器。这就是我的全部想法:-)。正在等待其他可能性。防火墙规则?您正在windows上测试?谢谢您的评论!就我所见,在两台服务器上都没有为该特定端口阻止任何内容。此外,诸如和nmap等站点也确认端口已打开。这两台服务器都运行Linux,使用AJAX进行测试的方法是转到发送它的网页(在Windows上的Google Chrome上)。问题的症状是阻止了传出连接。在windows(dev env)中,我遇到了类似的问题,因为防火墙会阻止每个进程的所有传出连接。可能允许使用php(cli),但不允许使用Web服务器。这就是我的全部想法:-)。等待其他可能性。