Ergebnis 1 bis 20 von 20

Thema: Schreiben eines RSS Feed Reader

  1. #1

    Schreiben eines RSS Feed Reader

    Hallo.

    Ich plan derzeit eine Art Portalseite für Blogs. Auf der Seite stehen dann Blogeinträge der letzten x Tage. Die Einträge wollte ich per RSS auslesen und dann in eine Datenbank (oder einer Textdatei) speichern.
    Allerdings stehe ich hier ein bisschen auf dem Schlauch. Das Auslesen von RSS Feeds ist nicht unbedingt das Thema, sondern vielmehr das automatische Auslesen.
    Ich hatte es so geplant, dass alle x Stunden, ein Prozess auf dem Server aufgerufen wird, welches das Auslesen übernimmt. Alternativ wäre auch denkbar, wenn ein User auf die Seite geht und x Stunden vergangen sind, seit der letzten Aktualisierung, dass dann ein Prozess gestartet wird.
    Ich wollte es auch so universal, wie möglich halten. Sprich, dass mein Projekt auf Windows und auf Linux Servern laufen kann. Als Scriptsprache wollte ich eigentlich php benutzen.

    Wäre AJAX mir dafür eine Hilfe? Wenn ja, gibt es irgendwo deutsche Referenzen/Tutorials dafür?
    Oder gibt es hier andere Lösungsmöglichkeiten?

  2. #2
    Ajax wird dir in diesem Fall nicht viel weiter helfen. Ajax verwendet man zum größten Teil, um Seiteninhalte im Browser ohne Relead zu aktualisieren bzw. nachzuladen.

    Die Feeds zu aktualisieren, immer wenn ein Benutzer die Seite lädt und eine gewisse Zeitspanne verstrichen ist, könnte zu Problemen führen, da genau dieser Benutzer der den Prozess anschubst so lange auf die Seite warten muss, bis die Feeds aktualisiert worden sind. Je nach Menge und Verfügbarkeit kommt dort dann schon eine gewisse Zeit zusammen. Hier könnte man aber einen PHP-Prozess abspalten, was soweit ich weis nur unter *nix Systemen funktioniert.

    Für die andere Möglichkeit brauchst du gewisse Rechte auf dem Server der das Script ausführt um den Cronjob/Task zu erstellen, der das Aktualisierungsscript ausführt - ist aber weitaus angenehmer, da der User davon nichts mitbekommt.

    PHP von Windows auf Linux portieren und umgekehrt ist kein Problem, wenn man ein wenig bei der Entwicklung aufpasst. Beispielsweise die Konstante DIRECTORY_SEPERATOR verwenden wenn man Pfadangaben macht.

    Da fällt mir noch ne möglichkeit ein: Der Benutzer bekommt die Seite ausgeliefert in der sich ein Javascript Block versteckt, der nach einem Timeout per Ajax das Aktualisierungsscript im Server startet. Ist im Grunde möglichkeit 1, ohne das der Benutzer das Aktualisieren durch eine verzögerte Ladezeit der Seite mitbekommt.

  3. #3
    Zitat Zitat von Freezy Beitrag anzeigen
    Die Feeds zu aktualisieren, immer wenn ein Benutzer die Seite lädt und eine gewisse Zeitspanne verstrichen ist, könnte zu Problemen führen, da genau dieser Benutzer der den Prozess anschubst so lange auf die Seite warten muss, bis die Feeds aktualisiert worden sind. Je nach Menge und Verfügbarkeit kommt dort dann schon eine gewisse Zeit zusammen. Hier könnte man aber einen PHP-Prozess abspalten, was soweit ich weis nur unter *nix Systemen funktioniert.

    Für die andere Möglichkeit brauchst du gewisse Rechte auf dem Server der das Script ausführt um den Cronjob/Task zu erstellen, der das Aktualisierungsscript ausführt - ist aber weitaus angenehmer, da der User davon nichts mitbekommt.
    Für die erste Methode gibt es ein Mittel mit cURL.
    Allerdings sind beide Methoden OS-Spezifisch (Pfade, Cronjob/Task), sodass ich dann zwei Versionen machen müsste aber dieses wollte ich, soweit wie möglich, verhindern.

    Aber anscheinend gibt es da wohl wirklich keine andere Möglichkeit.

  4. #4
    Es gibt natürlich noch die Triviallösung: Das erfolgt einfach durch ein ganz normales Skript, welches als Parameter ein Passwort erwartet, um Mißbrauch zu verhindern. Wie man das Skript automatisch aufruft (cronjob, Windows-Tasks etc.) sei jedem Admin selbst überlassen.

    Vorteil: Komplett portabel.
    Nachteil: Jeder, der das System bei sich nutzen will, muß selbst dafür sorgen, daß der Job läuft.

  5. #5
    Zitat Zitat von Whiz-zarD Beitrag anzeigen
    Für die erste Methode gibt es ein Mittel mit cURL.
    Allerdings sind beide Methoden OS-Spezifisch (Pfade, Cronjob/Task), sodass ich dann zwei Versionen machen müsste aber dieses wollte ich, soweit wie möglich, verhindern.

    Aber anscheinend gibt es da wohl wirklich keine andere Möglichkeit.
    Also ich könnte mir gut vorstellen, das erstere Methode sehr gut ohne größere Änderungen (höchstens paar Konfigurationen) auf beiden Systemem lauffähig ist. Oder wo genau siehst du dort das Problem?

  6. #6
    Zitat Zitat von Freezy Beitrag anzeigen
    Also ich könnte mir gut vorstellen, das erstere Methode sehr gut ohne größere Änderungen (höchstens paar Konfigurationen) auf beiden Systemem lauffähig ist. Oder wo genau siehst du dort das Problem?
    Bei der ersten Methode hab ich das Problem, dass cURL ein bestandteil von vielen Linux-Distros ist, während man bei Windowssystemen cURL erst einmal runterladen muss.
    Dementsprechend wird cURL auch anders angesprochen.

  7. #7
    Genauso wie du auf Windowssystemen erstmal ein komplettes WAMP-System installieren musst, damit überhaupt was läuft ô_O. Ich glaub ich versteh die Anforderung nicht ganz genau ^^
    Auf meinem Debian Server musste ich btw. auch erstmal PHP neu übersetzen damit cURL mit drin war. Das Php5, das man über den Packetmanager bekommt hat das nicht - zumindest wars vor nem Jahr noch so.

  8. #8
    Zitat Zitat von Freezy Beitrag anzeigen
    Auf meinem Debian Server musste ich btw. auch erstmal PHP neu übersetzen damit cURL mit drin war. Das Php5, das man über den Packetmanager bekommt hat das nicht - zumindest wars vor nem Jahr noch so.
    Weil bei cURL auf eine externe Anwendung zugegriffen wird, die bei vielen Linux Distros ein Bestandteil des Systems ist. Windows hat sowas nicht. Deswegen gibt es unter php Standardgemäß keine cURL Unterstützung mehr.

    Zitat Zitat von Freezy Beitrag anzeigen
    Genauso wie du auf Windowssystemen erstmal ein komplettes WAMP-System installieren musst, damit überhaupt was läuft ô_O. Ich glaub ich versteh die Anforderung nicht ganz genau ^^
    Es geht mir halt darum, dass mein Projekt unabhängig vom Betriebssystem sein sollte. Ich rede jetzt nicht von der Installation eines WAMP oder LAMP Systems.
    Ich möchte, dass mein Projekt auf beiden Systeme gleich läuft und ich möchte nicht zwei Versionen (einmal für Windows Server und einmal für Linux Server) haben, sodass jeder, unabhängig von seinem Server OS, dieses Projekt benutzen kann.
    Also so portabel, wie möglich.

  9. #9
    Also ich bin mir zu 95% sicher, dass auf einem WAMP System mit cURL das hier genause läuft wie auf einem LAMP System. Oder bin ich immernoch auf der falschen Fährte?

  10. #10
    sobald, wie ich das weiss, läuft das nur auf Linux Systemen, da bei cURL eine externe Anwendung aufgerufen wird, die ein Prozess im Hintergrund startet, welches das php Script ausführt.

    Aber das kann sein, dass ich hier falsch liege.

  11. #11
    Ach daher das Missverständniss
    Habs gerade getestet. Meine lokale PHP5 Windows Installation hatte schon im Ordner ./ext eine php_curl.dll. Die musste ich nur noch in die php.ini eintragen und es hat gefunzt. (Nach Apache Restart natürlich)

  12. #12
    Zitat Zitat von Whiz-zarD Beitrag anzeigen
    sobald, wie ich das weiss, läuft das nur auf Linux Systemen, da bei cURL eine externe Anwendung aufgerufen wird, die ein Prozess im Hintergrund startet, welches das php Script ausführt.

    Aber das kann sein, dass ich hier falsch liege.
    Das wäre problemlos portabel; auch Windows kennt Dinge wie Multitasking und Interprozesskommunikation. Man muß es nur anders implementieren. Allerdings ist das hinfällig, da php einfach libcurl benutzt; cURL ist eigentlich nur ein Kommandozeilen-Frontend für die Bibliothek.

    Was eher Probleme machen könnte wäre, daß dein Server PHP ohne cURL-Support gebaut hat. Aber das kann man ja per phpinfo() rausfinden.

  13. #13
    ah, ok. Ich war da wohl dann falsch informiert.
    Danke erstmal für die Antworten ^^

  14. #14
    Doppelpost ... bla ...

    Kann mir vielleicht einer verraten, wie ich cURL unter Windows zum Laufen bekomme? Ich hab Apache 2.2.11 und php 5.2.9 installiert.

    Was ich bis jetzt getan habe:
    In der php.ini:
    - extension_dir = "ephp5\ext" geschrieben (ist richtiger Pfad)
    - Semikolon bei extension=php_curl.dll entfernt

    Dateien in den Windows\system32 Order kopiert:
    - libeay32.dll
    - ssleay32.dll
    - php_curl.dll
    - php5ts.dll
    (die letzten Beiden wurden auf einer Seite empfohlen zu kopieren)

    Datei in den Apache2\bin Order kopiert:
    - php5ts.dll

    Ich hab nun alles gemacht, was ich innerhalb von 2 Stunden recherche finden konnte und dennoch lädt der das cURL Modul nicht. Also es taucht nicht einmal bei phpinfo() auf.

    Weiss jemand da evtl. weiter?
    Auf XAMPP wollte ich nun nicht zurückgreifen, weil eigentlich alles läuft. Bis auf cURL.

  15. #15
    Die php_curl.dll liegt aber zusätzlich auch noch im ephp5\ext, wo sie hin gehört? Bei mir liegt gar nix von php im System32 ...

    Elementare, wahrscheinlich sinnlose Frage. Apache auch neu gestartet?

    Bei mir ist curl aktiviert und taucht auch in der phpinfo() auf. Installiert ist auch Apache 2.2.11 und PHP 5.2.9. Wobei ich noch die kompletten Windows-Binarys mit drauf geworfen habe.

  16. #16
    ja, php_curl.dll liegt im extensions-Ordner, da wo sie auch hingehört.
    Apache habe ich schon öfters neugestartet. Musste zwischenzeitlich sogar öfters die VM (wo Windows läuft) neustarten.
    Also dran liegt es auch nicht.

    Achso, hab noch vergessen zu erwähnen, dass das OS Win XP ist und dass ich die Datei msvcr70.dll auch in den System32-order kopiert habe, wie auf einigen Seiten ebenfalls empfohlen wurde.

  17. #17
    Hast du das curl in der richtigen php.ini einkommentiert?

  18. #18
    Es gibt nur die eine. Ich habe kein XAMPP installiert, wo es zwei php.ini Dateien gibt, sondern alles einzeln und es läuft auch alles, bis auf curl.

  19. #19
    PHP unter Windows vermag echt kranke Fehler hervorrufen, z.B. das dlls nicht gefunden werden, die aber existieren (in der Fehlermeldung steht dann sogar der korrekte Pfad!).

    Für mal das entsprechende Äquivalent hierzu bei dir aus:
    Code:
    I:\www\php\php5.2.9>php --ri curl
    
    curl
    
    cURL support => enabled
    cURL Information => libcurl/7.16.0 OpenSSL/0.9.8i zlib/1.2.3
    
    I:\www\php\php5.2.9>php -m
    [PHP Modules]
    bcmath
    calendar
    com_dotnet
    ctype
    curl
    date
    dom
    filter
    ftp
    gd
    hash
    iconv
    imap
    json
    libxml
    mbstring
    mcrypt
    mysql
    mysqli
    odbc
    pcre
    PDO
    pdo_mysql
    Reflection
    session
    SimpleXML
    SPL
    ssh2
    standard
    tokenizer
    wddx
    xml
    xmlreader
    xmlwriter
    zip
    zlib
    
    [Zend Modules]

  20. #20
    so, nach vielen Hin- und Her hat php wohl nun endlich alles geladen aber nun scheint es Probleme mit mysql zu geben.
    Jedesmal, wenn er sich mit mysql verbinden will, stürzt Apache ab

    edit: hab jetzt die schnauze voll. Hab nun wieder alles gelöscht und XAMPP installiert. Nun läuft wenigsten alles ...

    Geändert von Whiz-zarD (08.04.2009 um 22:40 Uhr)

Berechtigungen

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