El procesamiento de archivos mediante File_get_contents experimenta agotamiento de la memoria
Cuando se trabaja con archivos grandes en PHP, se utiliza la función file_get_contents para recuperar todo el contenido del archivo una variable puede provocar errores de agotamiento de la memoria. Esto se debe a que la variable que contiene el contenido del archivo reside en la memoria y, para archivos grandes, se puede exceder el límite de memoria asignado.
Para superar este problema, un enfoque más eficiente es utilizar punteros de archivo y procesar el archivo. en trozos. De esta manera, solo la parte actual del archivo se mantiene en la memoria en un momento dado.
Aquí hay una función personalizada que implementa este procesamiento de archivos fragmentados:
function file_get_contents_chunked($file, $chunk_size, $callback)
{
try {
$handle = fopen($file, "r");
$i = 0;
while (!feof($handle)) {
call_user_func_array($callback, [fread($handle, $chunk_size), &$handle, $i]);
$i ;
}
fclose($handle);
return true;
} catch (Exception $e) {
trigger_error("file_get_contents_chunked::" . $e->getMessage(), E_USER_NOTICE);
return false;
}
}
Para usar esta función, defina una función de devolución de llamada para manejar cada fragmento de datos:
$success = file_get_contents_chunked("my/large/file", 4096, function($chunk, &$handle, $iteration) {
// Perform file processing here
});
Además, considere refactorizar sus operaciones de expresiones regulares para usar funciones de cadena nativas como strpos, substr, trim y explode. Esto puede mejorar significativamente el rendimiento cuando se trabaja con archivos grandes.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3