2012-01-05 219 views
1

我为朋友开发了一个应用程序,他最近更换了专用服务器以解决过载问题。无法连接PHP中的fsockopen(连接超时)

由于此迁移,网站的一部分不再有效:PHP中套接字上的连接。

在这一部分,我不得不etablish与其他服务器的连接,所以我意识到一个函数打开插座:

function openSocket($host, $port) { 
    $fp = fsockopen($host, $port, $errno, $errstr, 30); 

    if (!$fp) { 
     return 0; 
    } 

    fputs($fp, $envoi); 

    return $fp; 
} 

在代码中,我用这个函数那样:

$sock = openSocket($host, $port); 

while (!feof($sock)) { 
    echo fread($sock, 8192); 
} 

fclose($sock); 

有时候,我需要打开插座几分钟,因为迁移,我的朋友有这个错误在他的日志:

PHP的警告:的fsockopen():无法连接到...:80(连接 超时)在...,引用者:...

我搜索是否有PHP中的具体配置/ Apache,但我什么也没找到。

我试图增加fsockopen或stream_set_timeout()函数的最后一个参数,但没有任何工作。

感谢您的帮助

回答

1

两台电脑之间有可靠的连接吗?

+0

这是与我无法控制的外部服务器的连接。 – skurty 2012-01-05 08:10:41

0

某些托管提供商和专用服务器设置会限制其防火墙设置中允许的传出连接。这对防止不寻常的僵尸程序或利用脚本建立服务器连接(如果它受到攻击)特别有用。检查是否有任何出口/出站防火墙规则可能会阻止您。

其他原因 - 远程服务器上的入口/入站防火墙规则拒绝您的连接尝试或者机器之间的高度潜在连接。

+0

谢谢你的回答。我认为我的朋友已经在服务器的同一时间更换了主机。我会和他和主持人见面,我会让你知道的。 – skurty 2012-01-05 10:15:09

0

即使我面临同样的问题。
我正在为我的客户开发一个网站。
他希望我从专用时间服务器设置时间。
所以,我试图用UDP建立到该服务器的连接。 尝试了很多,但失败了。很久以后,我发现有些港口已经关闭,需要建立连接。
检出所需的端口,然后确认相应的端口已打开

相关问题