PHP使用fopen通过URL下载txt文件.如何限制下载量


PHP using fopen to download txt file via URL. How to limit the amount to download?

我写了一个php脚本,它解析这个文本文件

http://www.powerball.com/powerball/winnums-text.txt

一切都很好,但我希望控制下载量,也就是说,我不需要每一个结果,可能最多前5个。目前我正在下载整个文件(这是对内存/带宽的浪费)。

我看到fopen有一个参数,应该会限制它,但无论我输入什么值,都不会影响下载的文本量。

这能做到吗?感谢您的阅读。

下面是正在下载该文件的有问题的代码的一小部分。

<?php
$file = fopen("http://www.powerball.com/powerball/winnums-text.txt","rb");
$rows = array();
    while(!feof($file))
    {
        $line = fgets($file);
        $date = explode("Draw Date",$line);
        array_push($rows,$date[0]);
    }

fclose($file);
?>

感谢大家,这是刚刚下载第一行结果的代码

   while(!feof($file))
        {
            $line = fgets($file);
            $date = explode("Draw Date",$line);
            array_push($rows,$date[0]);
            if(count($rows)>1)
            {
                break;
            }
        }
fclose($file);

您可以在不需要更多数据的时候中断。在本例中,当count($rows)>100

 while(!feof($file)) {
        $line = fgets($file);
        $date = explode("Draw Date",$line);
        array_push($rows,$date[0]);
       if (count($rows)>100)
          break;
  }

问题是,只有在通读到文件末尾后,while条件才能满足。如果你只想得到前N行,你需要改变这个条件。像这样的东西可能会帮助你开始:

$lineCountLimit = 5;
$currentLineCount = 0;
while($currentLineCount < $lineCountLimit)
{
    $line = fgets($file);
    $date = explode("Draw Date",$line);
    array_push($rows,$date[0]);
    $currentLineCount++;
}

请尝试以下方法,只下载文件的一部分,比如先下载10 KB,然后拆分成行并进行分析。如何使用cURL部分下载远程文件?