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

PHP使用fopen通过URL下载txt文件。如何限制下载量?,php,Php,我已经写了一个php脚本来解析这个文本文件 一切都很好,但我希望控制的数额是下载,即我不需要每一个单一的结果,也许最多前5。目前我正在下载整个文件(这是对内存/带宽的浪费) 我看到fopen有一个参数,它应该限制它,但是我输入的任何值都不会影响下载的文本量 这能做到吗?谢谢你的阅读 下面是正在下载该文件的相关代码的一个小片段 <?php $file = fopen("http://www.powerball.com/powerball/winnums-text.txt","rb");

我已经写了一个php脚本来解析这个文本文件

一切都很好,但我希望控制的数额是下载,即我不需要每一个单一的结果,也许最多前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);

?>

只要不需要更多数据,就可以中断。在本例中,当
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++;

}
$lineCountLimit=5;
$currentLineCount=0;
而($currentLineCount<$lineCountLimit)
{
$line=fgets($file);
$date=分解(“绘制日期,$line”);
数组_push($rows,$date[0]);
$currentLineCount++;
}

请尝试以下方法,仅下载文件的一部分,如先下载10KB,然后拆分成行并进行分析

这:
而(!feof($file))
将始终下载,直到到达文件末尾。您需要更改该条件以避免下载整个文件。当您获得所需信息时,只需关闭句柄。不要等到文件结束。@dynamic oops谢谢。我纠正了while循环中的错误,还可以添加
$string.=$line$sizeInKB=数字\ U格式(strlen($string)/1024,2)$sizeInKB将保留当前下载量。
$lineCountLimit = 5;
$currentLineCount = 0;
while($currentLineCount < $lineCountLimit)
{
    $line = fgets($file);
    $date = explode("Draw Date",$line);
    array_push($rows,$date[0]);
    $currentLineCount++;

}