Ich versuche, ein 3-MB-Excel-Dokument zu durchlaufen, um alle Daten zu erhalten, die ich dann in die Datenbank einfügen muss. Das Arbeitsblatt, das ich verwende, hat 6500 Zeilen, aber es könnte in der Zukunft variieren. Ich habe festgestellt, dass obwohl ich die empfohlenen Speichertechniken verwende, es dennoch über
stolpert %Vor%Wenn ich die Speicherauslastung teste, bevor ich den objPHPExcel unscharfstellen kann und nachdem es keine Speicherverstärkung mehr gibt, bin ich wirklich verwirrt darüber, da die Aufteilung in Blöcke nicht erlaubt, den Speicher nach jedem Block zu löschen, und die Verwendung steigt allmählich, und mit einem Limit von 250 MB erlaubt es mir nur ~ 500 Datensätze hinzuzufügen
Die PHP-Excel-Bibliothek ist dafür bekannt, diese Speicherprobleme zu haben , ich hatte auch ein Problem damit. Was für mich funktionierte, war dieser Rat (aus dem obigen Link, probiere es aus, es gibt gute Ratschläge, wie man die Speichernutzung reduzieren kann):
%Vor%Aber trotzdem sind die Speicheranforderungen groß, weil sie jeder Zelle eine Menge Speicher zuweisen (zum Formatieren etc., auch wenn man das nicht benötigt). Ich fürchte, wir sind hilflos, bis sie eine neue Version der Bibliothek veröffentlichen.
Ok, jeder weiß, dass trwtf Excel ist, also darf ich fragen, ob es möglich ist, das in CSV zu konvertieren?
Ich habe meine eigenen CSV-Tabellenfunktionen in PHP, die zum Importieren sehr großer Dateien verwendet wurden, CSV ist viel leichter zu verarbeiten und auch weniger anfällig für zufällige Bibliotheksprobleme.
Wenn Sie dies wirklich für einen einmaligen Prozess benötigen oder ganz einfach von XLS zu CSV wechseln können, tun Sie dies bitte, da es Ihr Leben viel einfacher macht (wie immer, wenn Sie sich an einfachere Standardalternativen halten;)).
Und für eine API, die das ach-so-böse und furchtbare XLS-Format übersetzt, können Sie einen der folgenden o / s-Konverter verwenden - ich würde Python jedes Mal empfehlen, aber hey, Ihre Wahl:
Grundsätzlich ist die Idee die gleiche, Sie verwenden ein externes Tool, um ein brauchbares Dateiformat zu erhalten, und dann gehen Sie von dort aus.
Ich glaube nicht, dass ich mein Skript csvtotable.php hier habe, aber es ist ziemlich einfach zu replizieren, Sie müssen nur ein paar grundlegende Werkzeuge wie csvtoarray und dann arraytoinsertAnweisungen haben.
GL;)