Estoy leyendo un archivo que contiene alrededor de 50k líneas usando la función file() en Php. Sin embargo, da un error de falta de memoria ya que los contenidos del archivo se almacenan en la memoria como una matriz. ¿Hay alguna otra manera?Manera con menos memoria para leer un archivo en PHP
Además, las longitudes de las líneas almacenadas son variables.
Aquí está el código. Además, el archivo es 700kB, no 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;
}
Sé que esta pregunta es viejo, pero dos cosas aquí. 1. lea el archivo línea por línea. 2. El error de falta de memoria podría ser que también está almacenando todo en una matriz, por lo general no es una buena idea sin algún tipo de control y conocimiento de la memoria que tiene – Atherion