Tengo un script que, cuando se compara con un temporizador, se vuelve progresivamente más lento. Es bastante simple, ya que todo lo que hace es leer una línea, verifica y luego la agrega a la base de datos, luego pasa a la siguiente línea.El script PHP se vuelve progresivamente más lento (lector de archivos)
Aquí está la salida de la misma empeorando poco a poco:
Record: #1,001 Memory: 1,355,360kb taking 1.84s
Record: #1,001 Memory: 1,355,360kb taking 1.84s
Record: #2,002 Memory: 1,355,192kb taking 2.12s
Record: #3,003 Memory: 1,355,192kb taking 2.39s
Record: #4,004 Memory: 1,355,192kb taking 2.65s
Record: #5,005 Memory: 1,355,200kb taking 2.94s
Record: #6,006 Memory: 1,355,376kb taking 3.28s
Record: #7,007 Memory: 1,355,176kb taking 3.56s
Record: #8,008 Memory: 1,355,408kb taking 3.81s
Record: #9,009 Memory: 1,355,464kb taking 4.07s
Record: #10,010 Memory: 1,355,392kb taking 4.32s
Record: #11,011 Memory: 1,355,352kb taking 4.63s
Record: #12,012 Memory: 1,355,376kb taking 4.90s
Record: #13,013 Memory: 1,355,200kb taking 5.14s
Record: #14,014 Memory: 1,355,184kb taking 5.43s
Record: #15,015 Memory: 1,355,344kb taking 5.72s
El archivo, por desgracia, es de alrededor de ~ 20 GB, así que probablemente estará muerto para el momento en todo el asunto se lee en la tasa de aumento. El código está (principalmente) a continuación, pero sospecho que tiene algo que ver con fgets(), pero no estoy seguro de qué.
$handle = fopen ($import_file, 'r');
while ($line = fgets ($handle))
{
$data = json_decode ($line);
save_record ($data, $line);
}
¡Gracias de antemano!
EDIT:
Comentando 'save_record ($ data, $ línea);' parece no hacer nada.
¿Se puede publicar el código de save_record? Esa es probablemente la clave – Jhong
En realidad, si comento la línea save_record() sigue igual de mal. – DCD
¿Cómo está obteniendo ese rendimiento de rendimiento? No tiene registro de rendimiento en la muestra de código que proporcionó. Sospecho que el problema está en otra parte. ¿Tiene algún otro código que no nos muestra que pueda ser relevante? –