Laravel-excel: Warum nehmen Exporte in Warteschlangen viel Zeit in Anspruch?

Erstellt am 2. Juli 2020  ·  7Kommentare  ·  Quelle: Maatwebsite/Laravel-Excel

Voraussetzungen

Versionen

  • PHP-Version:7.1.3
  • Laravel-Version:5.8
  • Paketversion:3.1

Beschreibung

Ich benutze dieses Paket jetzt seit über einem Jahr. Vor kurzem hatte ich Probleme mit dem Speicher und der Leistung. Benutzer versuchen, viele Daten herunterzuladen. manchmal historische Daten. Also habe ich die Dokumente gelesen und den Abschnitt in der Warteschlange gefunden. Anfangs war es die perfekte Lösung. Bei Exporten in der Warteschlange werden mehrere Jobs gesendet, um die Datei nach Blöcken zu generieren. Aber mir ist etwas aufgefallen. Jeder Job (AppendQueryToSheet), der versendet wurde, benötigte mehr Zeit als der letzte. Der Abschluss des letzten Auftrags (CloseSheet) dauerte noch länger.

Meine Frage ist: ¿Funktioniert der Export in der Warteschlange so? ¿Oder fehlt mir etwas?

zusätzliche Information

Ich benutze Redis und Horizon. Sogar ich habe es mit mehreren Mitarbeitern versucht, aber es scheint, dass jedes Mal, wenn ein Job beendet wird, ein neuer Job versendet wird. Also hat es mein Problem nicht gelöst.

Ich habe dieses Bild angehängt, damit Sie die registrierten Zeiten sehen können.

Selection_007

question

Hilfreichster Kommentar

Jede Abfrage muss die Tabellenkalkulationsdatei erneut öffnen, was einige Zeit in Anspruch nimmt. Daher wird sie mit jedem Anhängen länger.

Ich habe einige Änderungen für 3.2 geplant, die dies verbessern werden.

Alle 7 Kommentare

Jede Abfrage muss die Tabellenkalkulationsdatei erneut öffnen, was einige Zeit in Anspruch nimmt. Daher wird sie mit jedem Anhängen länger.

Ich habe einige Änderungen für 3.2 geplant, die dies verbessern werden.

Ich habe hier das gleiche Problem. Die Dateigrößen sind auch nicht riesig, nur 5-10 MB. Ich habe keine Spitzen in der CPU- oder Speicherauslastung.

Ich habe beschlossen, einen Dienst mit Python und Pandas aufzubauen, der sich sehr verbessert hat, und ich meine VIEL. Laravel Excel ist eine ausgezeichnete Bibliothek, aber ich denke, für diesen Job ist es vielleicht nicht das richtige Werkzeug

@ okmkey45 Um fair zu sein, es ist nicht wirklich die Schuld von Laravel Excel, es basiert auf PHPSpreadsheet, einer ineffizienten Bibliothek zum Lesen / Schreiben von Dateien. Es ist eine Schande, weil die Abstraktionen rund um Chunking-Abfragen und Warteschlangenjobs hier sehr praktisch sind und mir viel Zeit sparen, einen Dienst in Go / Python zu schreiben und ihn mit meiner Warteschlange zu verbinden.

Es gibt einige Alternativen zu PHPSpreadsheet, die bei großen Dateien viel schneller sind. Vielleicht können sie ausgetauscht werden, wenn wir ->queue oder ShouldQueue ?

@aakarim das ist eigentlich etwas, über das ich nachgedacht habe, aber derzeit habe ich nicht die Zeit oder den Anwendungsfall, um dies zu implementieren. Ich wäre offen für eine PR, solange sie einfach gehalten wird und sich anmeldet.

Ich werde nach dieser Frist eine Bash haben. Gibt es Pakete, die Sie @patrickbrouwers bevorzugen / empfehlen? https://github.com/box/spout scheint ein guter Anfang zu sein.

@aakarim ja Box / Auslauf. Ich habe sogar in Betracht gezogen, die Verwendung von Liga / CSV zu ermöglichen, wenn Sie nur CSV möchten. Dies ist bei weitem die schnellste Option für große Massenimporte / -exporte.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen