Sabine: Daten täglich per Mail abrufen

Wie schreibe ich ein Script in PHP das täglich (bzw. nach einer sich ständig wiederholenden Zeitspanne) eine Aktion durchführt. Im Klartext, ich möchte mir täglich per Mail die neusten Einträge aus meiner Datenbank zusenden lassen.

  1. hi,

    Wie schreibe ich ein Script in PHP das täglich (bzw. nach einer sich ständig wiederholenden Zeitspanne) eine Aktion durchführt.

    zeitsteuerung kannst du auf einem linux-webserver über sog. "cronjobs" realisieren.

    per php-script selber geht das nicht. du kannst aber mit dem cronjob ein php-script starten lassen.

    gruss,
    wahsaga

  2. yo,

    hängt sehr stark vom dbms und eventuell dem betriebssystem ab.

    Ilja

    1. Moin!

      hängt sehr stark vom dbms und eventuell dem betriebssystem ab.

      Nö, vom DBMS hängt das überhaupt nicht ab, und das Betriebssystem hat nur marginale Auswirkungen, sprich: Auch ohne Cronjobs gibt es da Lösungswege.

      - Sven Rautenberg

      --
      Among the maxims on Lord Naoshige's wall, there was this one: "Matters of great concern should be treated lightly."
      Master Ittei commented, "Matters of small concern should be treated seriously."
      (Hagakure: The Way of the Samurai)
      1. yo,

        Nö, vom DBMS hängt das überhaupt nicht ab, und das Betriebssystem hat nur marginale Auswirkungen, sprich: Auch ohne Cronjobs gibt es da Lösungswege.

        dbms ala mssql sind stark in ihre umgebung eingebunden und können von sich aus die täglichen neuen einträge, änderungn oder was auch immer gewünscht per email verschicken, sogar einen anpipen, wenn bestimmte aktionen ausgeführt werden. andere dbms können so etwas nicht. insofern würde ich schon sagen, dass dbms spielt eine rolle.

        was das betriebsystem angeht, so unterscheiden sich bestimmte vorgehensweisen, je nachdem welches betriebsystem zugrunde liegt. auch das automatische starten eines batch jobs, dass zum beispiel ein php script zu einem betimmten zeitpunkt startet, ist sicherlich von betriebsystem zu betriebsystem verschieden.

        Ilja

        1. Welche Lösungswege gibt es da noch?

          1. Moin!

            Welche Lösungswege gibt es da noch?

            Solange du einen Trigger hast, also eine Aktion, die einigermaßen regelmäßig eintritt, gibt es für alles eine Lösung.

            Bei cronjobs wäre das Erreichen einer gewissen Uhrzeit der Trigger, muß aber extra auf dem Server konfiguriert werden - das ist für Massenhosting unerreichbar, es sei denn, du hast einen cronjob (oder ein paar mehr) bei deinem Hosting mit dabei.

            Alternativ kannst du von deinem Clientrechner aus natürlich auch zeitgesteuert eine Webseite abrufen, die dann die Mail losjagt. Windows hat den Taskplaner, damit würde das auch gehen. Aber du mußt zu diesem Zeitpunkt den Rechner an haben und online sein, sonst klappt das nicht.

            Außerdem kannst du natürlich deine Startseite (oder auch sonst jede Seite) mit einem kleinen Skript versehen, welches prüft, ob die Mail an diesem Tag schon rausgeschickt wurde. Falls ja: Einfach die Seite ausliefern. Falls nein: Mail generieren, wegschicken, und dann die Seite ausliefern. Sofern deine Mail nicht zehn oder mehr Sekunden Datenbankabfrage benötigt, ist das ein praktikabler Weg.

            Das Datum der letzten Generierung einer Mail speicherst du schlauerweise in der Datenbank. :) Oder alternativ in einer Textdatei (mußt dich dann aber ums Locking der Datei kümmern, sonst können sich zwei PHP-Skripte gegenseitig stören.

            - Sven Rautenberg

            --
            Among the maxims on Lord Naoshige's wall, there was this one: "Matters of great concern should be treated lightly."
            Master Ittei commented, "Matters of small concern should be treated seriously."
            (Hagakure: The Way of the Samurai)
            1. yo,

              Solange du einen Trigger hast, also eine Aktion, die einigermaßen regelmäßig eintritt, gibt es für alles eine Lösung.

              trigger halte ich für ungünstig, da es datenaktivität vorraussetzt. wenn sabine aber die mail nur zu einer bestimmten zeit zugeschickt haben will, dann müsste es in dieser zeit eine datenbankaktivität geben. man macht sich somit davon abhängig und bleibt diese mal aus, bleibt auch die mail aus.

              Ilja

              1. Moin!

                Solange du einen Trigger hast, also eine Aktion, die einigermaßen regelmäßig eintritt, gibt es für alles eine Lösung.

                trigger halte ich für ungünstig, da es datenaktivität vorraussetzt.

                Ich habe nicht von Datenbanktriggern gesprochen - und meine Erklärungen, was alles ein Trigger sein kann (was einfach "Auslöser" heißt - nicht nur bei Datenbanken), sollte das eigentlich noch verstärkt haben.

                - Sven Rautenberg

                --
                Among the maxims on Lord Naoshige's wall, there was this one: "Matters of great concern should be treated lightly."
                Master Ittei commented, "Matters of small concern should be treated seriously."
                (Hagakure: The Way of the Samurai)
                1. yo,

                  Ich habe nicht von Datenbanktriggern gesprochen - und meine Erklärungen, was alles ein Trigger sein kann (was einfach "Auslöser" heißt - nicht nur bei Datenbanken), sollte das eigentlich noch verstärkt haben.

                  da habe ich das wirklich mit triggern aus datenbanken zu sehr assoziert, was so nicht von dir gemeint war.

                  Ilja

          2. yo,

            wie gesagt, es wäre sehr hilfreich zu erfahren, welches dbms du benutzt, welches betriebsystem du hast und welche daten in der mail enthalten sein sollen, sprich alle daten oder nur die am dem tag veränderten etc.

            Ilja