无法在PHP中连接fsockopen(连接超时)

时间:2012-01-05 07:47:45

标签: php sockets connection fsockopen

我为朋友开发了一个应用程序,他最近更改了他的专用服务器以解决过载问题。

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

在这部分中,我必须与其他服务器建立连接,所以我实现了一个打开套接字的功能:

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()函数的最后一个参数,但没有任何效果。

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

两台计算机之间是否有可靠的连接?

答案 1 :(得分:0)

某些托管服务提供商和专用服务器设置限制了其防火墙设置中允许的传出连接。这对于防止异常机器人或漏洞利用脚本在服务器受到危害时建立连接特别有用。检查是否有可能阻止您的出口/出局防火墙规则。

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

答案 2 :(得分:0)

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