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