PHP fsockopen脚本在ajax上超时,但在命令行中几乎立即完成
我正在尝试在另一台服务器上创建一个网页,其中将显示我自己服务器的状态。 我使用的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({
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服务器。这就是我的全部想法:-)。等待其他可能性。