【发布时间】:2010-07-03 10:17:56
【问题描述】:
我正在使用 PHP 中的 file() 函数读取一个包含大约 50k 行的文件。但是,由于文件的内容作为数组存储在内存中,因此会出现内存不足错误。有没有其他办法?
此外,存储的行的长度是可变的。
这是代码。该文件也是 700kB 而不是 mB。
private static function readScoreFile($scoreFile)
{
$file = file($scoreFile);
$relations = array();
for($i = 1; $i < count($file); $i++)
{
$relation = explode("\t",trim($file[$i]));
$relation = array(
'pwId_1' => $relation[0],
'pwId_2' => $relation[1],
'score' => $relation[2],
);
if($relation['score'] > 0)
{
$relations[] = $relation;
}
}
unset($file);
return $relations;
}
【问题讨论】:
-
我知道这个问题很老,但这里有两件事。 1.逐行读取文件。 2. 内存不足错误可能是您将所有内容也存储在数组中,如果没有某种控制和您拥有的内存知识,通常不是一个好主意