Ergebnis 1 bis 6 von 6

Thema: Kann Conto externe php Files verarbeiten??

  1. #1
    Contao-Nutzer
    Registriert seit
    25.06.2010.
    Beiträge
    84

    Standard Kann Conto externe php Files verarbeiten??

    Hi liebe Conto User,

    ich wollte mit Hilfe des Schedulers einen CronJob erstellen, welcher auf ein PHP Skript zugreift um ein CSV Datei in die Datenbank zu importieren.

    Aber irgendwie scheint das nicht zu funktionieren. Muss ich die PHP Datei speziell auf Contao anpassen?? Gibts vielleicht sogar eine extension??

    Bin gerade am verzweifeln...

    Über Antworten würde ich mich freuen!

    1000 Dank

  2. #2
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Wenn ich dich richtig verstehe hat doch mit diesem Vorgang Contao gar nichts zu tun, oder?

    Du willst doch direkt per CRON regelmäßig ein php aufrufen, dann mach das. Dazu muss natürlich die Kommandozeilen Variante von PHP installiert sein.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  3. #3
    Contao-Nutzer
    Registriert seit
    25.06.2010.
    Beiträge
    84

    Standard

    Danke für deine schnelle Antwort.

    Es gibt den Scheduler, darüber kann ich verschiedene CronJobs erstellen. Aber wenn ich meinen Job einstelle tut sich garnichts, Skript wird nicht ausgeführt und die TABLE nicht aktualisiert. Wenn ich eine URL eingebe die nicht stimmt also fiktiv http://blablabla im Bezug auf "wo findet er das Skript" bekomme ich im Systemlog eine Fehlermeldung. Ist aber klar weil sich der Scheduler auf den relativen Pfad bezieht html/tl_files/csv/

    Ich dachte nur so ist es einfacher den Scheduler zu nutzen und evtl. übersichtlicher???

  4. #4
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    aja,also, wenn du das per http request aufrufen willst, dann kannste das ja selber per Browser testen obs geht.
    ggf. Fehlermeldungen ausgeben lassen um zu sehen was nicht geht.
    Das Script selber muss natürlich den Pfad zu CSV selber rausbekommen, über dirname oder ähnliches.

    Wenn das funktioniert, dann in den Scheduler eintragen.
    Jetzt kenne ich das Teil bei dir nicht, aber wenn ich das per crontab selber eintragen müsste, dann muss natürlich noch ein Programm angegeben werden, wer denn den Request aufrufen soll. Nur die URL bringt natürlich gar nichts.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  5. #5
    Contao-Nutzer
    Registriert seit
    25.06.2010.
    Beiträge
    84

    Standard

    Dank dir für deinen geistigen Anschupser.. Ich glaube auch das es weniger am CronJob liegt und ich mehr ein Fehler in der Programmierung hab. Ich schau mir das nochmal an und poste euch dann das Ergebnis. Vielleicht kanns ja irgendwer irgendwann mal gebrauchen.

    Dank dir nochmal für deine schnelle Unterstützung.

  6. #6
    Contao-Nutzer
    Registriert seit
    25.06.2010.
    Beiträge
    84

    Standard

    Also nach langem hin und her mit dem Hoster gibts nun folgendes Ergebnis. Um eine CSV in die MySQL zu schreiben gibts zwei Möglichkeiten.

    Variante 1:
    <?php

    $host = "localhost";
    $user = "user";
    $pass = "pass";
    $database = "datenbank";
    $dz = mysql_connect($host, $user, $pass);
    mysql_select_db($database, $dz);

    $query = "LOAD DATA LOCAL INFILE 'daten.csv' INTO TABLE tl_table FIELDS TERMINATED BY ';' LINES TERMINATED BY '' (id, etc.)";

    if(mysql_query( $query ))
    {
    echo "cool";
    }
    else
    {
    echo mysql_error();
    }
    ?>

    Diese wird aber von einigen Hostern nicht akzeptiert, weil dies unweigerlich ein Sicherheitsrisiko darstellt. Ist aber eigentlich die optimalste, weil sie wenig Speicher braucht.

    Variante 2:
    <?php
    $delimiter = ';';

    $db = new mysqli('localhost', 'db_user', 'db_pass', 'db_user');

    if (($handle = fopen("http://www.domain/tl_files/csv/daten.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
    foreach($data as $i => $content) {
    $data[$i] = $db->real_escape_string($content);
    }
    $db->query("INSERT INTO db_table VALUES('" . implode("','", $data) . "');");
    }
    fclose($handle);

    }

    ?>

    Hierbei wird die Datei ausgelesen und importiert. Hat aber auch zur Folge, wenn die csv Datei größer ist, kommts zu Schwierigkeiten.

    Dann noch den CronJob in Contao Scheduler eintragen und alles wird gut.

    Vielleicht hilfts ja irgendwann mal jemanden.

    cu

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
  •