这三个函数都是要打开URL。
如果URL的服务器能够连接,那没什么问题。但是,如果URL服务器被关闭了,或者说在INTERNET上根本不存在这个URL,用这三个函数的任意一个都会出现问题。
它们会一直请求,一直到set_time_limit的时间为止。
如:
$fp=fopen($url,"r");if(!$fp)//上面的URL的服务器无法连接,就始终都执行不到这里来。$fp=@fopen($url,"r");也是一样,其他2个函数的效果也一样。。可是我要在if(!$fp)里面执行数据回滚的操作,哪位大虾知道该怎么做,才能在这种情况也执行到下面来........

解决方案 »

  1.   

    看看手册中的示例
    $fp = @fsockopen("www.example.com", 80, $errno, $errstr, 5);//最大连接测试时间
    if (!$fp) {
      echo "$errstr ($errno)<br />\n";
    }else {
        $out = "GET / HTTP/1.1\r\n";
        $out .= "Host: www.example.com\r\n";
        $out .= "Connection: Close\r\n\r\n";    fwrite($fp, $out);
        while (!feof($fp)) {
            echo fgets($fp, 128);
        }
        fclose($fp);
    }