PHP-Skript im Hintergrund ausführen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • PHP-Skript im Hintergrund ausführen

    Hallo zusammen,

    ich brauch mal wieder eure Gedult und Hilfe.
    Ich möchte ein PHP-Skript alle 2 Std. periodisch im Hintergrund ausführen.
    Kann ich das mit PHP realisieren?

    Natürlich hab ich mich schon ein wenig damit beschäftigt. Cronjob wär hier die Lösung, nur läuft es halt auf Linux-Server.
    Ich selber würde mich aber auf eine unabhängige OS Lösung freuen.

    Danke schon mal im Voraus

    gruß
    trublu
  • Hallo

    Ich habe mich damit auch mal besch#ftigt und habe damals für mich "erschlossen" dass es nicht geht. Entweder du machst ne prüfung ob 2 stunden vorbei sind bei jedem Besuch der Seite und hoffst dass sie so oft besucht wird, dass es wirklich 2 stunden werden oder du hast nen cronjob.

    Vielleicht gibts dennoch eine Möglichkeit, wäre über eine Korrektur auch froh ^^

    mfG, Niko
  • Von einem sleep innerhalb von PHP würde ich eher abraten. Meiner Meinung nach ist PHP für ne Endlosschleife nicht gemacht. Weil der ganze Kram ja Ressourcen auf deinem Webserver belegt.

    Ich würde dir zu Cronjobs raten, der dein Skript alle x aufruft. Dafür gibts zwar nicht die gleiche, aber unterschiedliche Technologien. Unter Windows kannst du genauso sich wiederholende Aufgaben einstellen, wie unter Linux - Nur das die Technologie, die dahinter steckt eben eine andere ist.

    drupal.org/node/31506

    Wenn du ganz unabhängig sein willst - Könntest du dir einen Java-Deamon basteln, der immer im Hintergrund läuft und dein Skript antriggert. Das wär meiner Meinung zumindest sauberer, als immer ein Skript im Webserver laufen zu lassen, was ganz nebenbei auch den Nachteil hätte, dass man es immer manuell anstarten müsste.
  • Huhu wollte auch noch meinen Senf zugeben ^^

    Also entweder du machst es so wie BennyBunny sagte oder machst es echt so das bei jedem Aufruf der Seite gecheckt wird ob 2 Stunden vorbei sind und dann startet eben das Skript.

    Die Cronjob Variante ist eigentlich wie ich finde die sauberste und beste, wenn du aber unbedingt ne PHP Variante mit den Besuchern willst nehme niemals sleep .D

    Für diese Variante speicher am besten immer den timestamp der letzten Aktualisierung in der DB oder in einer Datei und überprüfe dann nach jeden Aufruf ob schon 2 Stunden vorbei sind.

    Wenn nein fertig wenn ja einfach das Skript starten fertig.

    Ist halt nur das Problem wenn paar Stunden kein User (zb Nachts) auf der Seite ist passiert eben keine Aktualisierung ;)

    Also mein Tipp nehme Cronjobs :)
  • ja, aber dann muss auch ein Client ständig die Seite offen haben, damit die Endlosschleife nicht unterbrochen wird


    Oh je, stimmt! Dazu müsste ja immer ein browser offen sein. Hab ich irgendwie total übersehen.
    Wahrscheinlich wird die ganze Sache dann über Cronjob laufen.

    Danke nochmals ;)

    gruß
    trublu
  • Hey,

    ich hab es mal geschafft, das man keinen Browser braucht. Das Script müsste ich irgendwo auch noch haben (hoffe ich).

    Funktionsprinzip:
    - Seite wird dem User angezeigt
    - Danach wird mit fsockopen() dein Schleifenscript aufgerufen. (muss über das web erreichbar sein)

    Das Schleifenscript macht folgendes:

    Quellcode

    1. <?php
    2. $stoptime = time() + 20;
    3. while(time() < $stoptime)
    4. {
    5. //tu irgend etwas
    6. usleep(1000);
    7. }
    8. //und das script wieder erneut aufrufen
    9. fsockopen()
    10. ?>
    Alles anzeigen


    Das Script selber ist natürlich nicht perfekt. Ich hatte es nur mal geschrieben um jemandem zu beweisen das es funktioniert. Wobei es natürlich Probleme geben kann, wenn dein Webserver selber mal hängt, dann ruft sich das Script nicht mehr auf. Es gibt auch Hoster, die einen fsockopen verbieten. Es gibt aber auch noch andere Methoden...

    Bei mir ist es aber ohne Probleme eine Woche durchgelaufen und hat halt alle 5min das aktuelle Datum in eine Datei geschrieben... Danach hatte ich es beendet. Das war auf einem Normalem Webspace.
    Du kannst es ja gerne mal nachbauen/verbessern wenn du willst...

    Gruß,
    Erasel
    My lovely mister singing club...
  • Wieso? Das Script ruft sich ja immer wieder selber auf...

    Sobald du einen Besucher hattest (und man geht ja auch selber mal auf die Seite) läuft das Script im Hintergrund. Der Besucher verlässt die Seite und das Script ruft sich selber wieder auf. Wie gesagt, es lief eine ganze Woche, danach hatte ich keine Lust mehr.
    Ich glaub ich mach nochmal einen Test, in dem das Script mir jeden Tag oder so ne Email schreibt.

    Gruß,
    Erasel
    My lovely mister singing club...