Ergebnis 1 bis 5 von 5

Thema: Größe Datenmengen importieren / CLI

  1. #1
    Contao-Nutzer
    Registriert seit
    10.09.2009.
    Beiträge
    27

    Standard Größe Datenmengen importieren / CLI

    Hallo,

    aktuell habe ich folgende Problemstellung:
    Ich arbeite an einer Erweiterung, welches einige Daten aus mehreren cdv-dateien importieren muss. Das Datenbank-Modell funktioniert soweit und die Datenbank ist auch als via DCA entsprechend definiert.

    Bis Dato habe ich den Import über den TL_PURGE Hook gelöst, was soweit kein Problem ist. Mein Problem ist, dass ich bisher die Daten die importiert werden sollen manuell herunterladen muss (in ein bestimmtes Verzeichnis innerhalb des Erweiterungs-Bundle). Der Grund für das manuelle herunterladen ist, dass der Download ~1-2 Minuten durchaus dauern kann (die Downloadquelle unterliegt leider nicht meiner Kontrolle und die sind extrem langsam).

    Mein Gedanke war jetzt, wie ich das ganze eventuell optimieren kann. Meine Idee war ein bin-script für das Erweiterungs-Bundle in der composer.json zu definieren, damit ich wiederum via Konsole den Download anstoßen kann (./vendor/bin/update-csv).

    Aktuell stocke ich jetzt dabei, wie ich effektiv die Daten in die Datenbank bekomme, ohne jetzt den Nutzer den Import über die Weboberfläche unter „Systemwartung“ den Import anstoßen lassen zu müssen.

    Mein aktueller Weg um meine TL_PURGE Klasse inkl. der Contao Datenbank-Klasse verwenden zu können ist aktuell:
    PHP-Code:
        define("TL_SCRIPT"„update-csv-database");
        define('TL_MODE', 'FE');

        use myname\bundlename\MaintanceCSVImport;

        // Initialisiere Contao für Datenbank-Zugriff
        require_once  __DIR__ . "
    /../../../system/initialize.php“;

        


        $maintance 
    = new MaintanceCSVImport();
        
    $maintance->importCSV(); 
    Ich bin mir aktuell absolut nicht sicher, ob dieser Weg so optimal ist (auch was neuere Contao-Versionen angeht) und vielleicht hat auch jemand eine komplett andere Idee, wie man den Import realisieren könnte.

    Gruß,
    Jens

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.088
    Partner-ID
    10107

    Standard

    Den Import solltest du in einen Service verlagern und diesen Service in einem (Symfony) Command benutzen.

  3. #3
    Contao-Nutzer
    Registriert seit
    10.09.2009.
    Beiträge
    27

    Standard

    Hallo Spooky,

    ok, dann werde ich es erst einmal so (temporär) lassen und mich dann doch einmal anfangen mit Symfony Bundles richtig zu beschäftigen. Zuerst mit einer einfachen Erweiterung, bevor ich dann die etwas komplexeren bestehenden Erweiterungen aus der Contao 3-Zeit überführe. Mit PHP an sich hab ich keine Probleme und kenne auch einige Frameworks, aber um Symfony hab ich irgendwie immer einen großen Bogen gemacht :-]

    Ein Einstieg dafür habe ich unter https://gist.github.com/joergmoldenh...dbc2d039095142 auch schon gefunden …



    Gruß,
    Jens

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.088
    Partner-ID
    10107

    Standard

    Code:
    composer require --dev inspiredminds/contao-maker-bundle
    vendor/bin/contao-console make:autowiring
    vendor/bin/contao-console make:command
    composer install

  5. #5
    Contao-Nutzer
    Registriert seit
    10.09.2009.
    Beiträge
    27

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Code:
    composer require --dev inspiredminds/contao-maker-bundle
    vendor/bin/contao-console make:autowiring
    vendor/bin/contao-console make:command
    composer install
    Danke - davon hatte ich auch schon in einem Webvideo gehört. Allerdings wirklich verwendet habe ich es jetzt für den aktuellen Fall nicht.

    Auch wenn die Erweiterung eigentlich nur für ein bestimmtes Projekt ist, hab ich diese nicht fest in /src entwickelt, sondern quasi als Composer-Paket und kann mein eigenes privates git-repository dafür verwenden. Der Teil, der make:command übernommen hätte (also quasi den service über die yml-Datei anzumelden) war auch schnell genug „per Hand“ erledigt.

    Vielleicht noch etwas allgemeines an alle, die sich überlegen sich doch etwas mehr mit Symfony usw. zu beschäftigen:
    Am Anfang steht man etwas wie ein Ochs vor dem Berg, aber ich kam dann doch schnell in das Thema rein. Der oben verlinkte Einstieg und die Videos vom letzten Contao Treffen (?) bei Youtube helfen einem schon sehr weiter - insbesondere, was das „best-practise“ angeht. Im Endeffekt war dann alles schneller erledigt, als ich ursprünglich dachte …

    Grüße und vielen Dank,
    Jens

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
  •