2012-09-27 17 views
10

estoy tratando de leer un archivo de gran tamaño (10 M) usando PHP file_get_contents¿Hay un límite en PHP file_get_contents?

$file = 'http://www.remoteserver.com/test.txt'; 
$data = file_get_contents($file); 
var_dump ($data); 

Se vuelca hacia atrás

string(32720) 

y luego la salida, con sólo muestra parte del archivo. ¿Hay algún límite en algún lugar de file_get_contents? Intenté hacer ini_set ('memory_limit', '512M'), pero eso no funcionó.

EDITAR: ** se olvidó de mencionar ** es un archivo remoto.

PROBLEMA RESUELTO :: Fuera del espacio HDD. Se corrigió eso y ahora todo funciona.

+0

No debería haber dicho límite. ¿Muestra el inicio o el final del archivo? ¿Estás seguro de que lee el archivo correcto? ¿Qué hace volcar cuando acortan el archivo un poco? – AndreKR

+0

Haga que descargue 'filesize ($ file)' antes de cargar y 'strlen ($ data)' después de cargar. Soy un poco curioso de lo que se trata. –

+0

¿Has intentado hacer un fread() en el archivo? Si es así, ¿te encuentras con el mismo problema? –

Respuesta

0

Suponiendo que el contenido del archivo que desea cargar está lógicamente separado por saltos de línea (p. Ej .: no es un archivo binario), entonces sería mejor que lea línea por línea.

$fp = fopen($path_to_file, "r"); 
$fileLines = array(); 
while (!feof($fp)){ 
    array_push(fgets($fp),$fileContents); 
} 
fclose($$fp); 

siempre se puede implode() (con la opción de línea de carácter de salto) la matriz de nuevo a una sola cadena si realmente necesita el archivo en un "trozo".

Referencia -

+0

Sospecho que con archivos tan grandes son binarios, por lo que 'fgets' puede no ser una buena idea. –

+0

@ale - buen punto. Aclaré mi suposición con respecto al archivo en cuestión. – Lix

+0

@ale - (recién notado) en el ejemplo de código proporcionado por el OP, se proporciona una extensión '.txt'. Entonces esto podría ser relevante después de todo. – Lix

Cuestiones relacionadas