fopen
falla cuando trato de leer en un archivo de tamaño muy moderado en PHP
. A 6 meg file
lo hace estrangular, aunque archivos más pequeños alrededor de 100k
están bien. He leído que a veces es necesario recompilar PHP
con el indicador -D_FILE_OFFSET_BITS=64
para leer archivos de más de 20 gigas o algo ridículo, pero ¿no debería tener problemas con un archivo de 6 megas? Finalmente, querremos leer en archivos de alrededor de 100 megas, y sería bueno poder abrirlos y luego leerlos línea por línea con fgets, ya que puedo hacerlo con archivos más pequeños.Lectura de archivos muy grandes en PHP
¿Cuáles son sus trucos/soluciones para leer y hacer operaciones en archivos muy grandes en PHP
?
Actualización: Aquí hay un ejemplo de un bloque de código simple que falla en mi archivo de 6 megas: PHP no parece arrojar un error, simplemente devuelve falso. Tal vez estoy haciendo algo extremadamente tonto?
$rawfile = "mediumfile.csv";
if($file = fopen($rawfile, "r")){
fclose($file);
} else {
echo "fail!";
}
Otra actualización: Gracias a todos por su ayuda, se hizo llegar a ser algo increíblemente tonto - un problema de permisos. Mi archivo pequeño inexplicablemente había leído permisos cuando el archivo más grande no lo hizo. Doh!
¿Usted apenas está tratando de pasar el archivo a través de? es decir. ¿Descargar? ¿O está realmente analizando los datos en los archivos con algún propósito? Gracias. – DreamWerx
no debería fallar sin generar una advertencia/error. Active todos los errores con error_reporting (E_ALL) y asegúrese de que display_errors esté configurado para mostrarse en su navegador, o consulte el registro de errores de su servidor web. –