Ankündigung

Einklappen
Keine Ankündigung bisher.

Ordner überwachen

Einklappen

Neue Werbung 2019

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

  • Ordner überwachen

    Hallo,

    ich habe eine Webcam die alle 5 Minuten ein Bild auf meinem Webspace speichert.

    Gibt es eine Möglichkeit dass mich mein Server per email (oder SMS wäre noch besser) informiert, wenn kein Foto von der Webcam kommt?

    Danke
    Roland

  • #2
    Grob gesagt: Ja, es geht.

    Dazu kannst du in deinem Server immer eine Abfrage machen, wie lange die letze Änderung her ist in dem Pfad, wo deine Bilder geuploadet werden.

    Hiermit kriegst du raus, wann etwas zuletzt im Pfad geändert wurde:

    PHP-Code:
    date_default_timezone_set("Europe/Berlin");

    $dir = new SplFileInfo('/DEIN_PFAD_ZU_DEN_BILDERN/.');

    $datum1 date('m/d/Y H:i:s'$dir->getMTime());

    $data = array(
        array(
            
    "date"  => $datum1
        
    )
    );

    function 
    sortFunction$a$b ) {
        return 
    strtotime($a["date"]) - strtotime($b["date"]);
    }
    usort($data"sortFunction");
    ob_start();
    var_dump($data);
    $result ob_get_clean();

    echo 
    substr($result6319); 
    Das heißt, wenn dort eine neue Datei angelegt wird, zeigt es dir die letze Änderung an <DATUM + ZEIT>


    Jetzt bist du dran:

    Du musst nun sagen: Wenn älter als 5 Minuten, dann Sende Mail an: <DEINE_EMAIL_ADRESSE@gmail.com> (siehe z.B. PHPMailer).
    Andernfalls tue nichts.


    Natürlich kann man auch mehrere Pfade miteinhängen (falls nötig):
    PHP-Code:
    date_default_timezone_set("Europe/Berlin");

    $dir = new SplFileInfo('/PFAD_1/.');
    $dir2 = new SplFileInfo('/PFAD_2/.');
    $dir3 = new SplFileInfo('/PFAD_3/.');
    $dir4 = new SplFileInfo('/PFAD_4/.');
    $dir5 = new SplFileInfo('/PFAD_5/.');
    $dir6 = new SplFileInfo('/PFAD_6/.');
    $dir7 = new SplFileInfo('/PFAD_7/.');

    $datum1 date('m/d/Y H:i:s'$dir->getMTime());
    $datum2 date('m/d/Y H:i:s'$dir2->getMTime());
    $datum3 date('m/d/Y H:i:s'$dir3->getMTime());
    $datum4 date('m/d/Y H:i:s'$dir4->getMTime());
    $datum5 date('m/d/Y H:i:s'$dir5->getMTime());
    $datum6 date('m/d/Y H:i:s'$dir6->getMTime());
    $datum7 date('m/d/Y H:i:s'$dir7->getMTime());

    $data = array(
        array(
            
    "date"  => $datum1
        
    ),
        array(
            
    "date"  => $datum2
        
    ),
        array(
            
    "date"  => $datum3
        
    ),
        array(
            
    "date"  => $datum4
        
    ),
        array(
            
    "date"  => $datum5
        
    ),
        array(
            
    "date"  => $datum6
        
    ),
        array(
            
    "date"  => $datum7
        
    )
    );

    function 
    sortFunction$a$b ) {
        return 
    strtotime($a["date"]) - strtotime($b["date"]);
    }
    usort($data"sortFunction");
    ob_start();
    var_dump($data);
    $result ob_get_clean();

    echo 
    substr($result,525,16); 
    Alles Gescheite ist schon gedacht worden. Man muß nur versuchen, es noch einmal zu denken.
    Autor: Johann Wolfgang von Goethe

    Kommentar


    • #3
      Zitat von Cycloholic
      Dazu kannst du in deinem Server immer eine Abfrage machen
      Und die zB per Cron automatisieren.
      The string "()()" is not palindrom but the String "())(" is.

      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Zitat von hausl Beitrag anzeigen
        Und die zB per Cron automatisieren.
        Genau, das muss ja immer und immer wieder aufgerufen werden sonst läuft das ganze ja nicht

        Passend hierzu eine schöne Anleitung https://www.stetic.com/developer/cro...ab-syntax.html
        Alles Gescheite ist schon gedacht worden. Man muß nur versuchen, es noch einmal zu denken.
        Autor: Johann Wolfgang von Goethe

        Kommentar


        • #5
          danke für die raschen antworten und die Hilfe.

          Da ich Anfänger bin brauche ich ein bisschen und habe jetzt gerade einmal die erste Aufgabe geschafft:

          Ich habe folgende php Seite erstellt:

          PHP-Code:
          <?php

             date_default_timezone_set
          ("Europe/Berlin"); 

          $dir = new SplFileInfo('teste/.'); 

          $datum1 date('Y/m/d H:i:s'$dir->getMTime()); 

          $data = array( 
              array( 
                  
          "date"  => $datum1 
              

          ); 

          function 
          sortFunction$a$b ) { 
              return 
          strtotime($a["date"]) - strtotime($b["date"]); 

          usort($data"sortFunction"); 
          ob_start(); 
          var_dump($data); 
          $result ob_get_clean(); 

          echo 
          substr($result,63,19); 
          ?>
          im Ordner "teste" sind die Fotos.
          Ich weiss nicht wirklich was die Zahlen in Zeile "echo substr($result,63,19); " bedeuten, aber ich bekomme folgendes angezeigt:

          2015/03/09 17:28:02

          das ist das Datum (ich habe das Jahr an erste Stelle gestellt) an dem das letzte mal was in den Ordner "teste" gekommen ist.

          Soweit so gut.

          Jetzt brauch ich nur noch eine funktion die mich benachrichtigt wenn in einer bestimmten Zeit nichts passiert.

          Was ich noch brauche ist eine "Automatisierung", aber wie ich sehe habe ich für dieses Problem schon eine Anleitung geliefert bekommen

          Kommentar


          • #6
            kann es sein dass ich auf meinem Webspace keine Cronjobs ausführen kann?

            Habe keinen eigenen Server nur Webspace

            Kommentar


            • #7
              fragst halt mal deinen provider,. oder such die freie cronscript hoster aus(wird hier alle nase lang erwähnt) und ruf ne apiseite auf, welche den test für dich macht .

              Kommentar


              • #8
                Zitat von Cycloholic Beitrag anzeigen
                Du musst nun sagen: Wenn älter als 5 Minuten, dann Sende Mail an: <DEINE_EMAIL_ADRESSE@gmail.com> (siehe z.B. PHPMailer).
                Andernfalls tue nichts.
                PHPMailer habe ich jetzt installiert und es funktioniert auch.

                Wie bringe ich jetzt PHPMailer dazu mir eine mail zu senden, wenn länger als 5 Minuten keine Änderung war?

                Kommentar


                • #9
                  Script soll prüfen wie alte die letzte Datei in deinem Ordner ist. Wenn älter als 5 Minuten ist dann Mail senden, sonst nichts machen.
                  The string "()()" is not palindrom but the String "())(" is.

                  Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                  PHP.de Wissenssammlung | Kein Support per PN

                  Kommentar


                  • #10
                    Zitat von hausl Beitrag anzeigen
                    Script soll prüfen wie alte die letzte Datei in deinem Ordner ist. Wenn älter als 5 Minuten ist dann Mail senden, sonst nichts machen.
                    Das ist ja mein Problem.
                    Wie mache ich das?

                    Kommentar


                    • #11
                      Das ist ja mein Problem.
                      Was genau? Oben hast du schon Code bekommen, auch einige Stichwörter zum selbst googeln, recherchieren etc...
                      The string "()()" is not palindrom but the String "())(" is.

                      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                      PHP.de Wissenssammlung | Kein Support per PN

                      Kommentar


                      • #12
                        hab mich schon bemüht...

                        ich habe einen "Free Cronjob" der startet alle 10 Minuten eine php-seite.
                        PHPMailer funktioniert.
                        das php-script liest mir die Änderungszeit des letzten Fotos.

                        Aber ich weiss nicht wie ich das script erweitern kann, dass es "kontrolliert" ob in den letzten 5 Minuten was passiert ist und mich benachrichtigt wenn nichts passiert ist.

                        Bin blutiger Anfänger.

                        Kommentar


                        • #13
                          "Kontrolliert" naja .. das Ding macht ganz "dumm" genau das was du programmierst. Dh dein Script sollte folgendes machen:

                          - jüngste Datei in deinem BilderOrdner finden (das hast du dann ja schon)
                          - wenn dieser Zeitpunkt länger als 5 minuten her ist, mail senden sonst nichts
                          The string "()()" is not palindrom but the String "())(" is.

                          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                          PHP.de Wissenssammlung | Kein Support per PN

                          Kommentar


                          • #14
                            So habe jetzt geschafft.
                            Ist vielleicht nicht wirklich elegant, aber es funktioniert.

                            PHP-Code:
                            <?php
                            $jetzt 
                            time();
                             
                            date_default_timezone_set("Europe/Berlin"); 

                            $dir = new SplFileInfo('monat_03/.'); 
                            $timestamp time();
                            $datum date("i:s"$timestamp);
                            $datum1 date('i:s'$dir->getMTime()); 
                             
                            $differenz $datum $datum1;
                            if (
                            $differenz 5) {
                                require 
                            'phpmailer/PHPMailerAutoload.php';

                            //Create a new PHPMailer instance
                            $mail = new PHPMailer;
                            //Set who the message is to be sent from
                            $mail->setFrom('rol@xxxxxx.at''First Last');
                            //Set an alternative reply-to address
                            $mail->addReplyTo('rol@xxxxxx.at''First Last');
                            //Set who the message is to be sent to
                            $mail->addAddress('rol@xxxxxx.at''John Doe');
                            //Set the subject line
                            $mail->Subject 'KAMERA';
                            //Read an HTML message body from an external file, convert referenced images to embedded,
                            //convert HTML into a basic plain-text alternative body
                            $mail->msgHTML(file_get_contents('phpmailer/examples/contents.html'), dirname(__FILE__));
                            //Replace the plain text body with one created manually
                            $mail->AltBody 'This is a plain-text message body';
                            //Attach an image file
                            $mail->addAttachment('images/phpmailer_mini.png');

                            //send the message, check for errors
                            if (!$mail->send()) {
                                echo 
                            "Mailer Error: " $mail->ErrorInfo;
                            } else {
                                echo 
                            "Message sent!";
                            }
                            } elseif (
                            $differenz == 5) {
                                echo 
                            "a ist gleich groß wie b";
                            } else {
                                
                            }
                            echo 
                            "<br>";
                            echo 
                            $datum "<br>";
                            echo 
                            $datum1 "<br>";
                            echo 
                            $differenz "<br>";

                            ?>
                            Ich habe mich bei einem freien "Cronjob Dienst" angemeldet, dieser ruft alle 5 Minuten meine php Seite auf und falls länger als 5 Minuten kein neues Foto gekommen ist, bekomme ich eine Mail.

                            Danke Euch für die Hilfe

                            Kommentar


                            • #15
                              ist mal fragelich, ob es sinn macht den ordner im script fets zu verdrahten.
                              frag doch einfach actual ab und setzte jeden monat einen link von monat_xx nach actual.

                              zudem fraghe ich mich, wieso du die sekunden brauchst:
                              was ist denn 59:00 - 00:10
                              wie du es verhinderst, dass dir alle stunde was geschickt wird, 59 - 04 ?

                              wenn du unixtimestamp - unixtimestamp setzt, ist die differenz von 5 minuten, 300 sekunden.

                              Kommentar

                              Lädt...
                              X