1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

PHP Timer oder so ähnlich?

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von newmacuser24, 05.04.08.

  1. newmacuser24

    newmacuser24 Antonowka

    Dabei seit:
    27.12.05
    Beiträge:
    355
    Hallo,

    In einer Tabelle meiner MySQL-Datenbank befindet sich eine Spalte, die mit DateTime formatiert ist. Jetzt möchte ich, dass das Script automatisch eine von mir festgelegte Prozedur ausführt (zum Beispiel eine email versendet), sobald irgendein Datums/Zeit Eintrag älter ist als das aktuelle Datum/die aktuelle Zeit.

    Löst man das über einen Timer, der alle paar Sekunden die Datenbank überprüft? Stelle ich mir ein bisschen unwirtschaftlich vor. Vermutlich gibt es da eine handlichere Lösung.

    Vielen Dank schon mal im Voraus!
     
  2. AgentSmith

    AgentSmith Hochzeitsapfel

    Dabei seit:
    15.07.07
    Beiträge:
    9.361
    Ja, das wäre auch ein bisschen unwirtschaftlich. Klingt nach einer Geschichte, die nach nem Cronjob schreit. Handelt es sich denn um einen lokalen MySQL-Server auf deinem Rechner oder einen richtigen Server?
     
  3. Sir Q

    Sir Q Rheinischer Winterrambour

    Dabei seit:
    12.04.05
    Beiträge:
    921
    Cronjob - auf jeden Fall.

    Du musst dann eben nur aufpassen, dass auch PHP-CLI (Comand Line Interface) installert resp. konfiguriert ist, damit PHP-Scripte auch in der Shell aufgerufen werden können.

    Außerdem: wenn du dein PHP-Script OHNE shebang schreibst, musst du beim cronjob auch den interpreter angeben - z.B. so:
    5 * * * * php /home/www/projekt/tools/mein_db_email_script.php

    wenn du aber in der Datei mein_db_email_script.php als erstes die PHP-shebang angibst, also beispielsweise:
    #!/usr/bin/php -q
    <?php
    $db_user = "mydbuser";



    dann kannst du im cronjob (vorrausgesetzt die Datei hat ausführungsrechte: chmod +x mein_db_email_script.php) ganz einfach das script nur so angeben:
    5 * * * * /home/www/projekt/tools/mein_db_email_script.php

    ~

    Es hat natürlich zum einen mit der eigenen Struktur und zum anderen mit der Größe des Projektes zu tun. Ich bevorzuge die Variante mit der PHP-shebang - so habe ich ein Verzeichnis mit CLI-Tools und ein Verzeichnis für die Web-Anwendung und laufe nicht Gefahr das eine mit dem anderen zu verwechseln und dann eventuell mich zu wundern warum etwas nicht läuft. Wichtig ist dann eben auch, dass die CLI-Scripte außerhalb des documentroot liegen, damit sie nicht per webbrowser aufrufbar sind …
     
  4. newmacuser24

    newmacuser24 Antonowka

    Dabei seit:
    27.12.05
    Beiträge:
    355
    Danke für die Antworten! Jetzt bin ich erstmal ein bisschen verwirrt ;) Ein paar mal noch durchlesen, dann kommt hoffentlich die Erleuchtung. Aber irgendwie hab ich so ein komisches Gefühl, dass das nicht gehen wird, da ich keinen eigenen Server besitzte, sonder lediglich Web-Space (mit PHP, MySQL,etc...) bei meinem Service-Provider....
     
  5. AgentSmith

    AgentSmith Hochzeitsapfel

    Dabei seit:
    15.07.07
    Beiträge:
    9.361
    Füttere doch mal dessen Support-Bereich mit dem Suchbegriff "Cronjob". Ansonsten könnte eventuell http://www.cronjob.de/ von Interesse für dich sein, aber um dir besser helfen zu können, wäre es sinnvoll, wenn du kurz umreissen könntest, was du vorhast.
     
  6. newmacuser24

    newmacuser24 Antonowka

    Dabei seit:
    27.12.05
    Beiträge:
    355
    Naja, im Grunde handelt es sich um so eine Art Erinnerungsfunktion. Man stellt auf der Webseite, nachdem man sich eingeloggt hat, einen Termin (Datum/Uhrzeit) ein und dann wird dementsprechend eine Aktion ausgeführt, sobald der festgelegte Zeitpunkt eingetroffen ist. Beispielsweise könnte eine Email versendet werden...
     
  7. AgentSmith

    AgentSmith Hochzeitsapfel

    Dabei seit:
    15.07.07
    Beiträge:
    9.361
    Du möchtest also einen Dienst anbieten, der ganz grundlegend und wesentlich auf so einer Funktion basiert? Dann solltest du mal mit deinem Hoster sprechen bzw. eventuell den Hoster wechseln, denn da wirst du ohne Crontab-Zugriff kaum glücklich, fürchte ich.
     
  8. newmacuser24

    newmacuser24 Antonowka

    Dabei seit:
    27.12.05
    Beiträge:
    355
    Da hätte ich noch eine Frage zur Berechnung des Datums:

    Ich versuche gerade ein zukünftiges Datum aus einem Eintrag in meiner Tabelle zu berechnen, der mit MySQL-DateTime formatiert ist.

    z.B.:

    //php

    $Date = "2008-04-04 00:00:00"

    $FutureDate = strtotime($Date,"+1 weeks");

    echo $FutureDate;

    //end php

    $FutureDate gibt daraufhin folgendes aus: 1207260000

    Erinnert mich irgendwie an "vergangene Sekunden seit 1.1.1970".

    Kann man daraus irgendwie wieder ein Datumsformat "yyyy-mm-dd" erzeugen oder muss man völlig anders an die Sache herangehen?

    Danke im Voraus!
     
  9. AgentSmith

    AgentSmith Hochzeitsapfel

    Dabei seit:
    15.07.07
    Beiträge:
    9.361
  10. newmacuser24

    newmacuser24 Antonowka

    Dabei seit:
    27.12.05
    Beiträge:
    355
    Ok, habs gefunden - obwohl es ein bisschen versteckt war ;)

    //php

    function sql_date_shift($date, $shift)
    {
    return date("Y-m-d H:i:s" , strtotime($shift, strtotime($date)));
    }

    $date = "2008-04-04";
    $shift = "+1 weeks"; // could be days, weeks... see function strtotime() for usage

    echo sql_date_shift($date, $shift);
     

Diese Seite empfehlen