我写了一个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部分下载远程文件?