0

我有以下功能:

    function doParse($parser_object) {
    $links=file("./fullsoccer.TXT", "r");
    $i=0;
    while(!empty($links[$i]))
    {
        set_time_limit(0);
        if (!($fp = fopen($links[$i], "r")));
        {
            //loop through data
            while ($data = fread($fp, 4096)) {
                //parse the fragment
                xml_parse($parser_object, $data, feof($fp));
            }
        }
        $i++;
    }
}

此代码将来自 fullsocce.txt 的 507 个 XML 数据链接的列表保存到 $links 然后我使用 fread 读取每个文件的内容(链接:在线链接)并将 $data 传递给我的主要函数 xml_parse 来解析和保存使用 SAX 解析器的数据。我的问题是:只是数组 $links 的最后一个文件被传递给函数并解析数据,我希望您的帮助知道为什么它只使用一个文件?请问这是紧急情况

4

2 回答 2

0

你失踪了fclose,但除此之外我认为你需要做一些调试,尝试注释掉“xml_parse”函数并添加echo $links[$i]."<br />\n";

function doParse($parser_object) {
  $links=file("./fullsoccer.TXT", "r");
  $i=0;
  foreach($links as $link)
  {
      set_time_limit(0);
      echo 'reading '.$link."\n";
      $fp = fopen($link, "r");
      if ($fp!==false)
      {
          //loop through data
          while ($data = fread($fp, 4096)) {
              //parse the fragment
              //xml_parse($parser_object, $data, feof($fp));
              echo $data;
          }
          echo "\n";
          fclose($fp);
      } else {
          echo 'Cannot Open Link '.$link."\n";
      }
      $i++;
  }
}
于 2013-05-08T13:52:37.147 回答
0
!($fp = fopen($links[$i], "r")

fopen 在错误时返回 FALSE,因此此检查仅在 eof 或 invild 行处为真。也许将其更改为

 if (($fp = fopen($links[$i], "r") != FALSE)

我还注意到一个额外的;和 ) 在 if (!($fp = fopen($links[$i], "r"))); 也许我只是没有正确匹配。

于 2013-05-08T13:48:31.333 回答