Ich habe ein Skript, das, wenn es gegen einen Timer gesetzt wird, progressiv langsamer wird. Es ist ziemlich einfach, da es nur eine Zeile liest, prüft, dann fügt es es der Datenbank hinzu und geht dann zur nächsten Zeile über.PHP-Skript wird immer langsamer (Datei-Reader)
Hier ist der Ausgang davon nach und nach immer schlimmer:
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
Die Datei ist leider um ~ 20gb so werde ich wahrscheinlich durch die Zeit tot sein das Ganze bei der Steigerungsrate gelesen wird. Der Code ist (hauptsächlich) unten, aber ich vermute, dass es etwas mit fgets() zu tun hat, aber ich bin mir nicht sicher was.
$handle = fopen ($import_file, 'r');
while ($line = fgets ($handle))
{
$data = json_decode ($line);
save_record ($data, $line);
}
Vielen Dank im Voraus!
EDIT:
kommentierte out 'save_record ($ data, $ line);' scheint nichts zu tun.
Können Sie den Code für save_record buchen? Das ist wahrscheinlich der Schlüssel – Jhong
Eigentlich, wenn ich die save_record() Zeile auskommentieren, ist es immer noch genauso schlecht. – DCD
Wie erhalten Sie diese Leistungsausgabe? Sie haben keine Leistungsprotokollierung in dem von Ihnen bereitgestellten Codebeispiel. Ich vermute, das Problem ist woanders. Haben Sie mehr Code, den Sie uns nicht zeigen, der relevant sein könnte? –