kostenloser Webspace werbefrei: lima-city


Datei "live" auslesen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    t**************t

    Heyho!

    Aktuell habe ich eine Live-Console die mir auch unter anderem eine Log-Datei von einem externen FTP zieht. Auf meinem Zweitwebspace ging das auch wunderbar ... doch bei lima gab es erst das Problem das nichts ging - mit passive mode geht es jetzt. Ich lade meine PHP-Datei per AJAX in die Zielseite, allerdings alle paar Sekunden (live halt). Und da ist das Problem .
    er haut mir dann eine temporäre Sperre für paar Sekunden rein, dann gehts wieder.

    Im Script selber passiert folgendes:
    Connecten (mit Prüfungen)
    Datei speichern
    Disconnecten
    Datei zeilenweise ausgeben
    Datei schließen

    Gibt es da eine Alternative? Wie ich da live draufzugreifen könnte?!
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Heyho,

    ich versuche es mal zusammen zu fassen, damit du sehen kannst, ob ich es richtig verstanden habe:
    Du hast eine Webseite auf der du eine Log Datei anzeigen möchtest.
    DIese Webseite läd alle paar Sekunden via AJAX eine PHP Datei von deinem Webspace bei lima-city.de.
    Diese PHP Datei verbindet sich zu einem FTP Server, authentifiziert sich, fordert die Log Datei an, speichert sie lokal und gibt die Datei dann aus.

    1. FTP ist IMHO nicht unbedingt dafür gedacht, dass man sich alle paar Sekunden neu einloggt. Du baust keine konstante Verbindung auf, sondern bei jedem AJAX Request wird eine neue FTP Verbindung aufgebaut.
    Beschränkungen könnten hier einerseits druch lima-city.de gegeben sein. Maximal x externe Verbindungen in einem Intervall y. Auf der anderen Seite könnte auch durch deinen FTP Server eine Beschränkung gegeben sein, der pro Intervall y nur x IP/Benutzer o.ä. zu lässt.
    2. Das Prinzip das du nutzt nennt sich auch Polling der Informationen. Du schaust einfach in einem gewissen Intervall (alle paar Sekunden) ob es neue Informationen gibt. Da der Server in die Log Datei schreibt, weiß nur der Server, wann es neue Informationen gibt. Folglich wäre es konzeptionell sinnvoller den Server per Push die neuen Informationen an den Clienten zu übermitteln. D.h. der Server informiert den Client: "Hier, ich habe neue Informationen für dich". Bezüglich der Software Architektur wäre bspw. ein node.js Server hilfreicher oder eine Architektur die das Pushen unterstützt.
    3. Konkreter Vorschlag, um die Architektur nicht groß zu ändern:
    Lass den Server die Log Informationen in eine MySQL Datenbank bei lima-city.de speichern, was bei vielen Serveranwendungen recht einfach von der Hand geht. Damit entfällt dein langsamer und scheinbar temporär fehlerhafter FTP Zugriff.

    Viele Grüße
    Lucas
  4. Eventuell wäre CURL ja auch eine Alternative?

    Oder ein Script, dass dir den LOG erst in eine andere Form bringt, beispielsweise JSON. Dann brauchst du nur noch die Daten abholen. Was bei Ajax ja auch wesentlich mehr Sinn macht, die Daten gleich per POST zu holen, anstelle eines ganzen Files.
  5. Autor dieses Themas

    t**************t

    lucas9991 schrieb:
    1. FTP ist IMHO nicht unbedingt dafür gedacht, dass man sich alle paar Sekunden neu einloggt. Du baust keine konstante Verbindung auf, sondern bei jedem AJAX Request wird eine neue FTP Verbindung aufgebaut.
    Beschränkungen könnten hier einerseits druch lima-city.de gegeben sein. Maximal x externe Verbindungen in einem Intervall y. Auf der anderen Seite könnte auch durch deinen FTP Server eine Beschränkung gegeben sein, der pro Intervall y nur x IP/Benutzer o.ä. zu lässt.

    Das ist richtig er baut immer eine neue Verbindung auf.

    2. Das Prinzip das du nutzt nennt sich auch Polling der Informationen. Du schaust einfach in einem gewissen Intervall (alle paar Sekunden) ob es neue Informationen gibt. Da der Server in die Log Datei schreibt, weiß nur der Server, wann es neue Informationen gibt. Folglich wäre es konzeptionell sinnvoller den Server per Push die neuen Informationen an den Clienten zu übermitteln. D.h. der Server informiert den Client: "Hier, ich habe neue Informationen für dich". Bezüglich der Software Architektur wäre bspw. ein node.js Server hilfreicher oder eine Architektur die das Pushen unterstützt.

    Ich will das anderen bereit stellen, nachdem es sich "nur" um eine Minecraft-Konsole handelt haben ist sie ja dafür gedacht das der Benutzer KEINEN direkten Zugang auf die Konsole hat sondern nur FTP sonst könnte man direkt in den Screen an den Server ran gehen dann könnt ich mir die Arbeit sparen :D


    3. Konkreter Vorschlag, um die Architektur nicht groß zu ändern:
    Lass den Server die Log Informationen in eine MySQL Datenbank bei lima-city.de speichern, was bei vielen Serveranwendungen recht einfach von der Hand geht. Damit entfällt dein langsamer und scheinbar temporär fehlerhafter FTP Zugriff.

    Selber Grund wie oben ich will es einfach halten und bei Datenbanken fängt bei es bei vielen schon an wie man die erstellt usw. und da hab ich selber auch noch nicht so viel Erfahrung ;C

    Ich hab es jetzt "gelöst" wenn er nur alle 5 Sekunden das Script lädt dann funktioniert alles ordnungsgemäß.

    all-in1 schrieb:
    Eventuell wäre CURL ja auch eine Alternative?

    Oder ein Script, dass dir den LOG erst in eine andere Form bringt, beispielsweise JSON. Dann brauchst du nur noch die Daten abholen. Was bei Ajax ja auch wesentlich mehr Sinn macht, die Daten gleich per POST zu holen, anstelle eines ganzen Files.


    Wie würde das dann mit CURL aussehen? Damit hab ich noch nie was gemacht aber ich hab es mal gehört. Und man bekommt man mit JSON dann nur einen Rückgabewert als "Zeichenkette" oder? Hab ich das richtig verstanden?
  6. Das wäre eine Variante http://www.php-kurs.info/tutorial-webseiten_auslesen.html

    Und je nach dem wie deine Logadatei aufgebaut ist, kannst du das dann noch weiterverarbeiten zu einer HTML Seite, oder in eine DB schreiben. Mit Curl ist man da durchaus flexibler, als via FTP.

    Du könntest dafür sogar eine spezielle Logdatei anfertigen lassen, wo die Leute noch eine ID senden müssen, um die Datei einlesen zu dürfen. Auch Login Systeme dafür sind denkbar, denn cURL kann auch Passwort und Benutzername senden.
  7. Autor dieses Themas

    t**************t

    all-in1 schrieb:
    Das wäre eine Variante http://www.php-kurs.info/tutorial-webseiten_auslesen.html

    Und je nach dem wie deine Logadatei aufgebaut ist, kannst du das dann noch weiterverarbeiten zu einer HTML Seite, oder in eine DB schreiben. Mit Curl ist man da durchaus flexibler, als via FTP.

    Du könntest dafür sogar eine spezielle Logdatei anfertigen lassen, wo die Leute noch eine ID senden müssen, um die Datei einlesen zu dürfen. Auch Login Systeme dafür sind denkbar, denn cURL kann auch Passwort und Benutzername senden.


    Die Logdatei ändern will ich nicht, ich greif da auf einen Minecraft-Log zu

    all-in1 schrieb:
    Eventuell wäre CURL ja auch eine Alternative?

    Oder ein Script, dass dir den LOG erst in eine andere Form bringt, beispielsweise JSON. Dann brauchst du nur noch die Daten abholen. Was bei Ajax ja auch wesentlich mehr Sinn macht, die Daten gleich per POST zu holen, anstelle eines ganzen Files.


    Die Idee war extrem gut und der Link auch :)

    Ich hab es jetzt so gelöst das mir ein Skript die Datei holt und in json konvertiert.
    Mit einem zweiten Script dekodiere ich das json wieder und gebe es aus, das wird über ajax alle 3 sekunden ausgeführt, so gibt es keine FTP-Fehler und es läuft sogar bei 8900 gut gefüllten zeilen log noch ziemlich schnell!

    Danke für den Link mit CURL das hat mir echt geholfen und ich glaube das werde ich auch weiterhin öfter mal benutzen. Danke an euch beide!

    // Thread kann geschlossen werden

    Beitrag zuletzt geändert: 12.1.2016 21:04:35 von teammeininternet
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!