Contao-Camp 2024
Ergebnis 1 bis 11 von 11

Thema: C4.10.x, Content-Element Tabelle, CSV-Import wird nicht eingelesen

  1. #1
    Contao-Fan
    Registriert seit
    05.05.2011.
    Beiträge
    860

    Standard C4.10.x, Content-Element Tabelle, CSV-Import wird nicht eingelesen

    Beim Versuch eine CSV-Datei mit 8MB in ein Content-Element vom Typ Tabelle einzulesen erhalte ich im Backend die Meldung "Die Datei ...csv wurde erfolgreich hochgeladen", jedoch werden die Tabellenzellen nicht gefüllt. Liegt das Problem an der Dateigröße (die max. Uploadgröße in den Einstellungen ist auf 10MB gesetzt), oder kommen hier auch andere Dinge wie die Anzahl der Zeilen und Spalten mit ins Spiel?

    Auch kann ich via FTP die Datei nicht auf dem Server finden, was läuft schief und was könnte ich tun? Danke für Tipps und Hinweise.

    Contao Version 4.10.4, PHP 7.3,
    keine Erweiterungen,
    Hosting: all-inkl PrivatPlus

  2. #2
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    6.733
    Contao-Projekt unterstützen

    Support Contao

    Standard

    PHP-Einstellungen bzw. vorhandene Einschränkung beim Hosting dürften auch eine Rolle spielen.
    Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
    Unterstütze bitte das Contao-Projekt (Button Links)
    Weitere Spendenmöglichkeiten
    ------------------------------------------------------------------------------------------------------
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.




  3. #3
    Contao-Fan
    Registriert seit
    05.05.2011.
    Beiträge
    860

    Standard

    PHP-Einstellungen bzw. vorhandene Einschränkung beim Hosting dürften auch eine Rolle spielen.
    Ganz bestimmt, welche Einstellungen und Einschränkungen müssten denn wie geändert werden?

  4. #4
    Administratorin Avatar von lucina
    Registriert seit
    19.06.2009.
    Ort
    Kiel (DE)
    Beiträge
    7.332
    Partner-ID
    152
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Was steht denn in Logfiles?

  5. #5
    Contao-Fan
    Registriert seit
    05.05.2011.
    Beiträge
    860

    Standard

    In system/logs und var/logs liegen keine Einträge, in den Logs im Backend konnte ich herausfinden, dass die CSV-Datei im Ordner system/tmp/ gespeichert wurde. Ich habe jetzt mal in der .htaccess eingetragen
    Code:
    php_value memory_limit 512M
    php_value max_execution_time 120
    und auf PHP 7.4 umgestellt. Bisher ermöglichen aber auch diese Änderungen keinen korrekten Import. Was könnte ich noch tun?

  6. #6
    Administratorin Avatar von lucina
    Registriert seit
    19.06.2009.
    Ort
    Kiel (DE)
    Beiträge
    7.332
    Partner-ID
    152
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Möglicherweise hat der Webserver ja noch ein separates Log? Bei mir, in meiner eigenen Konfiguration, gäbe es dann noch ein PHP-Log und ein Log von MariaDB. Auch wenn das bei Dir vielleicht anders ein mag bzw. du keinen Zugriff hast: Da stände mit Sicherheit etwas drin.

    Bei Deiner Tabelle ist dann auch die Frage, wie viele Zellen die hat. Das könnte sich dann eventuell mit max_input_vars beheben lassen.

    Ansonsten: Ich importiere umfangreichere Daten eigentlich immer mit Adminer, PHPmyAdmin, etc.

  7. #7
    Contao-Fan
    Registriert seit
    05.05.2011.
    Beiträge
    860

    Standard

    @Lucina, danke für deinen Support
    An ein PHP-Log komme ich offensichtlich nicht dran, im Root liegen unter /logs lediglich gz-gezippte Access-Logs älteren Datums, Datenbank ist MySQL. Ich habe jetzt mal vergeblich versucht via PHPmyAdmin herauszufinden wo denn die Daten eines CSV-Imports abgelegt werden, any ideas?

    Der Import sollte durch Redakteure über das BE erfolgen, daher ist der Weg via PHPmyAdmin eigentlich nur eine Notlösung. Meine Tabelle hat 200.000 Zellen, mit dem Eintrag
    Code:
    php_value max_input_vars 200000
    meldet der Server
    HTML-Code:
    Internal Server Error

  8. #8
    Administratorin Avatar von lucina
    Registriert seit
    19.06.2009.
    Ort
    Kiel (DE)
    Beiträge
    7.332
    Partner-ID
    152
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hmmm. Nicht gut - das könnte bedeuten, dass dem Webserver die Ressourcen ausgehen.

    Schauen wir mal, was Du da machst und was der Server dann zu tun hat:
    (1) Eine CSV mit 200'000 Zellen
    (2) Server liest die ein mit dem tableImportWizard ein
    (3) und packt sie mit BackendCsvImportController.php in ein Array
    (4) Server verteilt die Inhalte des Arrays auf die Input-Felder
    (5) Server schiebt das Ergebnis in die Datenbank
    (6) Server versucht, dass dann zu speichern, und zwar in /system/tmp

    Alles zwischen (2) und (5) ist für Dich erstmal Black Box, und dem was da passiert könntest Du mit dem Debugger nachspüren. (6) passiert erst ganz zum Schluss.

    (2) und (3) sind abhängig vom Arbeitsspeicher, (5) von der Konfiguration, ob diese Menge an Daten überhaupt in einem Request geschrieben werden darf. (6) passiert erst dann, wenn alles andere ausgeführt wurde.

    Ich hatte mal den Fall, dass eine CSV mit +4'000 Variablen nur unvollständig importiert wurde. Die wurde dann aber bei 2'000 Datensätzen abgeschnitten, d.h. dass die vorherigen Schritte zwar grundsätzlich funktioniert haben, aber halt die Input Vars zu niedrig eingestellt waren. Das hat nach Anpassung dann auch funktioniert.

    Dein 500er bedeutet ja mindestens, dass dem Webserver der RAM für eine sinnvolle Meldung ausgegangen ist. Arrays können sehr gross sein - da müssen noch nicht mal viele Felder mit umfangreichen Infos drin sein. Eine Vorstellung beommt man unter https://nikic.github.io/2011/12/12/H...-Hint-BIG.html

    Dazu kommt dann: PHP verarbeitet das komplette Array in einem Rutsch. Das mag gut gehen, oder auch nicht.

    Ich weiss, das löst Dein Problem jetzt erst einmal nicht, aber es gibt Hinweise. Ich würde eine solche Datenmenge vermutlich direkt in die DB importieren.

  9. #9
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.939

    Standard

    Zitat Zitat von lucina Beitrag anzeigen
    Ich weiss, das löst Dein Problem jetzt erst einmal nicht, aber es gibt Hinweise. Ich würde eine solche Datenmenge vermutlich direkt in die DB importieren.
    Zudem frage ich mich, ob das Vorgehen so überhaupt sinnvoll ist. Ich würde als User der Website keine Seite sehen wollen, auf der eine Tabelle mit 200.000 Einträgen angezeigt wird. Für mich schauen diese Datenmengen eher nach Import in eine eigene Datenbanktabelle und der Ausgabe durch ein Content Element aus, mit dem ich filtern und suchen kann (z.B. das Listing Bundle, https://github.com/contao/listing-bundle).
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  10. #10
    Contao-Fan
    Registriert seit
    05.05.2011.
    Beiträge
    860

    Standard

    Danke für euren Input,
    nachdem ich die htaccess so geändert habe
    Code:
    php_value memory_limit 1024M
    php_value max_execution_time 120
    php_value max_input_vars 200000
    passiert folgendes:
    • Eine CSV-Datei von knapp 4MB mit 202.000 Zellen wird hochgeladen
    • nach etwas Rödelei werden im BE tatsächlich alle 202.000 Zellen angezeigt
    • mit Klick auf den Speichern-Button verabschiedet sich der Chrome-Browser (keine Rückmeldung) um nach einigen Minuten im BE und FE noch ca. 100.000 Zellen anzuzeigen (gar nicht mal sooo wenig)



    Zudem frage ich mich, ob das Vorgehen so überhaupt sinnvoll ist. Ich würde als User der Website keine Seite sehen wollen, auf der eine Tabelle mit 200.000 Einträgen angezeigt wird. Für mich schauen diese Datenmengen eher nach Import in eine eigene Datenbanktabelle und der Ausgabe durch ein Content Element aus, mit dem ich filtern und suchen kann (z.B. das Listing Bundle, https://github.com/contao/listing-bundle).
    Das stimmt natürlich und für den Live-Betrieb würde ich eine solche Datei natürlich nach sinnvollen Aspekten aufteilen, hochladen und ausgeben. Mich hat aber einfach interessiert ob sich solche Kundenwünsche im Shared Hosting umsetzen lassen.

    Das Listing Bundle ist eine gute Idee, damit habe ich kaum Erfahrung, das schaue ich mir jetzt mal an. Danke für euren Support

  11. #11
    Contao-Fan
    Registriert seit
    05.05.2011.
    Beiträge
    860

    Standard

    Das Listing-Bundle hatte ich überhaupt nicht auf dem Schirm, eine tolle Core-Erweiterung, danke nochmal für den Tipp @fiedsch. Für meine Anwendung habe ich dazu noch einige Fragen, dafür habe ich einen eigenen Thread aufgemacht, da es hier ja nur um das Content-Element Tabelle geht.
    Geändert von 3dr (13.11.2020 um 10:41 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •