使用fread()抑制错误

时间:2010-04-23 18:44:56

标签: php

我从我们的软电话中为屏幕弹出写了一个脚本,该脚本找到了调用者的目录列表,但偶尔会出现“无法读取输入流”,其余的脚本退出。

有没有人对如何抑制错误错误并允许其余脚本运行有任何建议?谢谢!

$i=0;

    $open = fopen("http://www.411.ca/whitepages/?n=".$_GET['phone'], "r"); 
    $read = fread($open, 9024); 
    fclose($open); 
    eregi("'/(.*)';",$read,$got);
    $tv = ereg_replace('[[:blank:]]',' ',$got[1]);
    $url = "http://www.411.ca/".$tv;
    while ($name=="unknown" && $i < 15) { ## try 15 times before giving up
    $file = @ fopen($fn=$url,"r") or die ("Can't read input stream");
    $text = fread($file,16384);
    if (preg_match('/"name">(.*?)<\/div>/is',$text,$found)) {
            $name = $found[1];
    } 
    if (preg_match('/"phone">(.*?)<\/div>/is',$text,$found)) {
            $phone = $found[1];
    } 
    if (preg_match('/"address">(.*?)<\/div>/is',$text,$found)) {
            $address = $found[1];
    } 
    fclose($file);
    $i++;
    }

1 个答案:

答案 0 :(得分:0)

您需要检查返回值,特别是fopen

这样的事情:

$file = fopen($fn=$url,"r");
if ($file === false) {
    // Unable to open stream, handle error
}

然后,您需要决定如何处理fopen无法从您提供的URL中读取时发生的错误。我怀疑你实际上是想简单地抑制错误并允许脚本继续而不需要做有意义的事情所需的数据。您可以暂时暂停并尝试重新打开该文件,或者将用户引导到更友好的错误页面,而不是使用“无法打开的文件”消息进行死亡。