Ich habe ein Problem in PHP-Ausführungszeit, zuerst erkläre ich, was ich in PHP-Datei gemacht habe. Ich muss CSV-Datei erstellen, also schrieb ich Abfrage, um Daten von DB zu holen. und Meine Abfrage gibt 1 Million Datensatz zurück und ich habe PHP fwrite() verwendet, um Daten in eine CSV-Datei zu schreiben. aber mein Skript Taken 76.481406211853
sec, um eine CSV-Datei zu generieren, die 1 Million Daten enthält. Wie reduziert man diese Ausführungszeit? Irgendwann bekam ich fatalen Fehler:Wie PHP Ausführungszeit zu reduzieren und ini_set() in PHP setzen?
Fatal error: Allowed memory size of 1048576 bytes exhausted (tried to allocate 793601 bytes)
so, wie Speicher zu verwalten?
PHP-Code hier:
<?php
// start script
$time_start = microtime(true);
echo_memory_usage();
//My logic here
// End of Script
echo 'Total execution time in seconds: ' . (microtime(true) - $time_start);
echo_memory_usage();
function echo_memory_usage() {
$mem_usage = memory_get_usage(true);
if ($mem_usage < 1024)
echo $mem_usage." bytes";
elseif ($mem_usage < 1048576)
echo round($mem_usage/1024,2)." kilobytes";
else
echo round($mem_usage/1048576,2)." megabytes";
echo "<br/>";
}
?>
Mein Ergebnis ist
512 kilobytes //Script start
1006.25 megabytes // script End
Total execution time in seconds: 76.481406211853
Und erfolgreich schreiben CSV mit 1 Million Rekord-Datei .. aber die Ausführungszeit zu lang und irgendwann Fatal Error wirft. Und auch wie man ini_set() setzt? Weil ich setzen muss ini_set('memory_limit', '1023M');
Der Grund von ich 1023 gesetzt, nach Skript ausführen Speicherauslastung ist 1006,25, also muss ich 1023M setzen? Ist es richtig?
Um zu klären, ist 10 laks bedeuten eine Million? – Steve
Der Code, den Sie gezeigt haben, zeigt nicht, was Sie überhaupt tun, es zeigt nur "// Meine Logik hier". Der beste Weg, dies zu beheben, besteht darin, die Datenbank abzufragen und dann nacheinander die Zeile resultset 1 durchzugehen und die Einträge in die Datei zu schreiben, aber ohne einen relevanten Code zu sehen, ist es schwer vorzuschlagen, wie man es verbessert. –
Auch ohne zu gehen Wikipedia, die meisten Leute hier wissen nicht, was ein Lak ist - schlagen Sie vor, Englisch zu verwenden, um Ihr Problem zu einem breiteren Publikum zu beschreiben –