Ankündigung

Einklappen
Keine Ankündigung bisher.

Zeitgesteuerte Funktionen in php/mysql

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zeitgesteuerte Funktionen in php/mysql

    Hi,

    folgendes ausgangsproblem:
    --

    Ich will/brauch eine funktion die regelmässig ein Check mit einigen Datumsfelder macht und wenn die Zeit zwischen CURDATE() und datumsfeld < 2 Wochen ist soll eine aktion folgen.

    sprich eine Art Cronjob,
    der täglich gegen 24:00 alle Datensätze gegenprüft, ob eine Mail versandt werden muss.

    der MySQL Part davon ist mir klar,
    nur PHP Seitig frage ich mich gerade noch wie man das am besten angeht.

    Jmd. ne theoretische Idee, was ne gute Herangehensweise ist ?


    Gruss
    fidel_

  • #2
    Also wenn dir da keine CronJobs zur Verfügung stehen, kannst du das ja folgendermaßen lösen:

    Ich würde beim ersten Aufruf der Seite am aktuellen Tag die Aktion durchführen und einen Record in einer ähnlichen Job-Tabelle in der Datenbank ablegen. So kannst du nachprüfen, ob der Job schon an diesem Tag gelaufen ist!

    Ne andere Lösung ohne Cronjobs fällt mir jetzt erstmal nicht ein!

    Hoffe, ich konnte helfen!
    http://www.fun2stay.de

    Kommentar


    • #3
      hi,

      mir gehts erstmal um gedankenansätze.

      es spricht nix gegen cron jobs, zumidest fällt mir bis dato nix ein

      habe auch das hier gefunden:
      http://freshmeat.net/projects/emrem/

      ist sowohl ein PHP Weg sowie eine Perl-Variante enthalten.

      ich will nur mal Ideen hören, was sich anbietet und wieso


      danke

      fidel_

      Kommentar


      • #4
        dann benutz doch einfach cronjobs

        www.cronjob.de

        Kommentar


        • #5
          >>cronjobs.de
          oehm ne


          sonst niemand was vergleichbares zu "emrem" ?
          oder doch alles von hand basteln ?

          sowas ist doch sicher schonmal gebastelt worden.


          gruss
          fidel

          Kommentar


          • #6
            Hi,

            ich krieg das einfach nicht zum laufen.

            a) mein eintrag in der Crontab:
            Code:
            */5 * * * * fpoeck cd /var/www/WORK/fid_kniel/ ; /usr/bin/php ./_mail2.php
            da das PHP file andere referenziert,
            hab ich in der Cronanweisung einen CD eingebaut, um zumidest an der richtigen stelle zu sein



            b) das php script
            führe ich dieses im browser aus, wird die maikl sauber versendet.
            nur der CRON mässige aufruf will bis dato nicht funktionieren.

            PHP-Code:
            <?php
            //
            //
            //
            // -------------------------------------------------------------------
            // PART 1 Datenbank-ZEUG
            //
            //
            // DB Stuff
            include 'inc/config.php';
            //
            error_reporting(E_ALL);
            //
            @mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die(mysql_error());
            mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
            //
            //
            // Den zu schicken Mailtext auf Null setzten, sicher ist sicher
            $text='';
            //
            // Wir brauchen das aktuelle Datum im SQL format
            $sql        "SELECT CURDATE()";
            $result     mysql_query($sql);
            $row         mysql_fetch_array($result);
            //echo "Das heutige Datum: ".$row[0]."

            ";
            //
            // wir brauchen das Zieldatum,Ziel ist in 2 Wochen
            $sql2     = "SELECT DATE_ADD('".$row[0]."'INTERVAL 10 DAY)";
            $result2     = mysql_query($sql2);
            $row2         = mysql_fetch_array($result2);
            //echo "
            Das Zieldatum".$row2[0]."

            ";
            //
            // Finde raus für welche Artikel eine Mail versendet werden soll.
            $query = "SELECT     artikel_inv_nummer                 AS 'Nummer'
                        
            FROM         KIS_artikel
                        WHERE     artikel_next_prueftermin 
            '".$row2[0]."' ";
            $result = mysql_query($query) or die('MySQL-Error: bei Termin. Bitte melden Sie dies dem System-Administrator.');    
            // sind keine Artikel betroffen
            if(mysql_num_rows(
            $result) == 0)
            {
                // do nothing at all
            }
            else
            {
                // we must send an email
                while(list(
            $artikel_inv_nummer) = mysql_fetch_array($result))
               {              
                    
            $text = " ".$text." Inventar-Nummer".$artikel_inv_nummer."  //  ";
                  
            }
                echo 
            "</table>
            "
            ;   
            }
            //
            //
            //
            //
            //
            //
            //
            //
            // -------------------------------------------------------------------
            // PART 2 MAIL-ZEUG
            //
            //
            // SMTP Klasse
            include('class.smtp.inc');

            //header('Content-Type: text/plain');

            // smtp daten:
            $params['host'] = 'my.host.de';        // smtp server host/ip
            $params['port'] = 25;                    // smtp server port
            $params['helo'] = exec('hostname');        // What to use when sending the helo command. Typically, your domain/hostname
            $params['auth'] = TRUE;                    // basic authentication or not
            $params['user'] = 'myUser';                // Username für auth
            $params['pass'] = 'myPass';
            //
            //
            // These parameters get passed to the smtp->send() call.
            $send_params['recipients']        =     array('mail@mail.de');                    // Empfänger (koennen mehrere sein)
            $send_params['headers']            =     array('From: "Bla" <my@mail.de>',    'To: [email]mail@mail.de[/email]''Subject: NEUbla');

            $send_params['from']                =     'my@mail.de';                            // Mail from
            $send_params['body']                =     ''.$text.'';                                    // Mail Body    
            //
            //
            //
            //
            // The code that creates the object and sends the email.
            if(is_object($smtp smtp::connect($params)) AND $smtp->send($send_params))
            {
                
            //echo 'Email erfolgreich versendet!'."\r\n\r\n";
                //print_r($smtp->errors);
            }
            else
            {

                
            //echo 'Error sending mail'."\r\n\r\n";
                //print_r($smtp->errors);

            }
            ?>

            Kommentar

            Lädt...
            X