Heim >Backend-Entwicklung >PHP-Problem >Exportieren Sie große Mengen PHP-Daten (mehr als 500.000) in einer Minute nach Excel

Exportieren Sie große Mengen PHP-Daten (mehr als 500.000) in einer Minute nach Excel

慕斯
慕斯nach vorne
2021-06-25 09:38:068554Durchsuche

Wir haben so viel über PHP gelernt. Ich weiß nicht, wie sehr Sie die Fähigkeiten zur Verwendung von PHP beherrschen. Ich glaube, dass viele Leute das Wissen verstehen, aber nicht nutzen werden Sorgen Sie sich. Dieser Artikel soll Ihnen eine ausführlichere Anleitung zur Verwendung von PHP geben.

Analyse

1. Zunächst müssen wir die Anzahl der 50 W+ klären, die wir exportieren müssen. Wir alle wissen, dass die maximale Anzahl von Zeilen in der Excel2003-Version 65535 beträgt Zeilen und die Anzahl der Zeilen in der Excel2007-Version (1048576 Zeilen). Um unsere Anforderungen zu erfüllen, muss die von uns verwendete Excel-Version Version 2007 und höher sein.

2. Klassenbibliothek

Die am häufigsten verwendete Klassenbibliothek für PHP zur Verarbeitung von Excel ist PHPExcel (nach einem Beispieltest habe ich 5-8 Minuten gebraucht, um 10.000 Daten zu exportieren, plus verschiedene Datenbeurteilungsverarbeitungen); Ich habe auch eines namens PHPOffice im Internet gefunden (ich habe es noch nie benutzt, Sie können es ausprobieren, es soll effizienter sein als PHPExcel, ich werde beim nächsten Mal einen Blog-Beitrag schreiben, um es vorzustellen, es gibt auch fputcsv(); ), das eine Datei im CSV-Format exportiert, kann auch mit einer Excel-Datei geöffnet werden.

1. Timeout

Das ist direkt, die Anfrage läuft ab. Bei der Verarbeitung so vieler Datenanfragen kommt es in Supermärkten sehr häufig vor. Zu diesem Zeitpunkt müssen wir die PHP-Konfiguration ändern: set_time_limit(0).

2. Überlauf

Wir nehmen alle Daten aus der Datenbank und füllen sie auf einmal in den Speicher. Wenn die CPU-Konfiguration des Servers nicht hoch ist, kann dies auch dazu führen, dass die Auslastung erreicht wird 100 %, was zu einer Auslastung der Serverkarte führt. Bezüglich des Überlaufs müssen wir auch die PHP-Konfiguration ändern: ini_set('memory_limit', '1024M').

Lösung

1. Verwenden Sie PHPExcel zum Exportieren von mehr als 500.000 Daten. Nach dem Testen ist es machbar und kann auch auf den Server exportiert werden Es ist langsamer und wird weiter heruntergeladen. Wenn Sie die PHP-Klassenbibliothek verwenden, wird empfohlen, PHP auf die neueste PHP7-Version zu aktualisieren, um Speicher zu sparen und eine schnellere Berechnungsgeschwindigkeit zu erzielen

2 Verwenden Sie CSV zum Exportieren

Wenn Sie die PHP-Klassenbibliothek nicht verwenden fputcsv() ist der beste Weg. Da die CSV-Datei kleiner ist, kann die CSV-Generierung nicht viel in Anspruch nehmen von CPU und Zeit, und die Generierungszeit von Excel nimmt mit zunehmender Dateidatenmenge zu.

3. Die ideale Lösung

Teilen Sie die Daten nach bestimmten Bedingungen auf, um die Menge der exportierten Daten zu reduzieren. Die Datensegmentierung kann beispielsweise einmal pro Woche oder einmal pro Tag erfolgen ein notwendiger Schritt, um Speicherverlust und Laufzeitüberschreitung zu verhindern;

Führen Sie eine Algorithmusoptimierung durch, reduzieren Sie verschachtelte Schleifen, wenn Daten in einer Schleife erstellt werden, und reduzieren Sie so die Anzahl der Datenbankabfragen Wenn Sie andere Daten verwenden, generieren Sie bitte vorab die entsprechende Datenstruktur.

4. Die schnellste Lösung

Übergeben Sie die Anforderungen an Betrieb und Wartung und führen Sie direkt die SQL-Anweisung zum Exportieren aus:

SELECT
	*
FROM
	table_name 
INTO OUTFILE 'F:/test.csv' 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n';

Der folgende Fehler kann beim Ausführen dieser Anweisung auftreten:
The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
Dies liegt an der Konfiguration Berechtigungsproblem von MySQL, es kann ausgeführt werden. SHOW VARIABLES LIKE '%secure%'; Überprüfen Sie den aktuellen Wert von secure-file-priv, was bedeutet, dass der Export verboten ist, also müssen Sie ihn festlegen. Ändern Sie den Pfad in der Datei my.ini unter dem MySQL-Installationspfad und legen Sie ihn fest. Wenn nicht, fügen Sie diese Konfiguration hinzu:

secure_file_priv=F:/

Sie werden feststellen, dass Daten mit mehr als 50 W schnell exportiert werden. Sie können diese Anweisung auch schreiben, um den Pfad dieser Datei auf dem Server zu erfahren und sie zum Herunterladen zu verpacken.

Verwandte Lernvideofreigabe:

php-Video-Tutorial

Das obige ist der detaillierte Inhalt vonExportieren Sie große Mengen PHP-Daten (mehr als 500.000) in einer Minute nach Excel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen