basti2011: Emailversand bei Dateiänderung auf einen HTTP-Server

Hallo,

ich habe folgendes Problem: Ich kann per FTP Dateien auf einen Webserver hochladen. Da ich FANCY-INDEXING beim Apache aktiviert habe, kann ich diese Dateien im Browser auch sehen. So weit so gut.

Jetzt wollte ich gerne, dass sobald sich der Inhalt eines bestimmten Verzeichnisses geändert hat (ich also eine neue Datei hochgeladen habe), automatisch eine Email an ein oder mehrere Personen geschickt wird. Ich will so sicherstellen, dass eben diese Personen sofort benachichtig werden, wenn es neue/aktuelle Dateien auf dem Server gibt.

Ich hoffe meine "Problemsellung" ist soweit klar. Hat jemand eine pfiffige Idee?

Vielen Dank im voraus für Eure Ideen/Unterstützung.

MfG,
Basti

    1. Hi suit,

      vielen Dank für die scnelle Antwort. Allerdings ist das nicht das gnaz richtige für meine Anwendung. Ich hatte eine "eingebaute" Funktion im Apache gedacht. Nur an diesem kann ich über die htaccess-Datei Änderungen vornehmen. An Befehle vom dem Linux komme ich nicht dran.

      Gibt es nicht eine Möglickeit Apache anzuweise eine Email zu versenden, sobald sich der Inhalt eines Verzeichnisses ändert?

      Vielleicht würde es auch mit einem PHP-Skript klappen. Dieses müsste dann periodisch (z.B. alle 10 Minuten) aufgerufen werden und den Inhalt eines Verzeichnisses kontrollen. Gab es zum letzten Durchlauf eine Änderung wird eine Email verschickt. Kennt jemand sowas?

      Vielen Dank.

      Basti

      1. Gibt es nicht eine Möglickeit Apache anzuweise eine Email zu versenden, sobald sich der Inhalt eines Verzeichnisses ändert?

        Nicht dass ich wüsste - ich kann mir durchaus vorstellen, dass Apache wissen muss, was sich so im Filesystem geändert hat und was nicht, schon allein aus Cachinggründen, aber ob (und wenn, wie) man da dran kommt, weiß ich nicht.

        Vielleicht würde es auch mit einem PHP-Skript klappen. Dieses müsste dann periodisch (z.B. alle 10 Minuten) aufgerufen werden und den Inhalt eines Verzeichnisses kontrollen. Gab es zum letzten Durchlauf eine Änderung wird eine Email verschickt. Kennt jemand sowas?

        Periodisch alle 10 Minuten aufrufen erfordert wieder, dass du "an Befehle vom Linux" rankommst.

        1. Das periodische Aufrufen eines PHP-Skripts wird von meinem Hoster unterstützt. Das nennt sich bei dem "Cronjob" und macht eben nichts anderes als ein festen Intervallen ein PHP-Skrips aufzurufen.

          MfG,
          Basti

          1. Das periodische Aufrufen eines PHP-Skripts wird von meinem Hoster unterstützt. Das nennt sich bei dem "Cronjob" und macht eben nichts anderes als ein festen Intervallen ein PHP-Skrips aufzurufen.

            Warhscheinlich ist es auch ein Cron-Job der einfach nur ein PHP-Script anstößt :)

            Wenn es nicht um viele Files geht gibts möglicherweise eine einfache Lösung:

            Mit glob() eine Liste der Files erstellen - die packst du dann inklusive dem letzten Änderungsdatum in ein Array und speicherst es irgendwo in einem Textfile (ggf. serialisiert).

            Beim nächsten Aufruf machst du dasselbe und vergleichst es mit dem bereits gespeicherten. Wenn sie ident sind, musst du nichts weiter tun - wenn sie nicht ident sind, musst du die beiden Arrays durchackern (bzw. eine Schnittmenge bilden) um die Unterschiede zu erhalten. Und die Unterschiede verschickst du dann per Mail.

            btw inotify gibts auch als PECL -Erweiterung - die wirst du aber vermutlich nicht haben :)
            http://www.php.net/manual/en/book.inotify.php

        2. Hi!

          Gibt es nicht eine Möglickeit Apache anzuweise eine Email zu versenden, sobald sich der Inhalt eines Verzeichnisses ändert?
          Nicht dass ich wüsste - ich kann mir durchaus vorstellen, dass Apache wissen muss, was sich so im Filesystem geändert hat und was nicht, schon allein aus Cachinggründen, aber ob (und wenn, wie) man da dran kommt, weiß ich nicht.

          Ja, aber Apache muss das erst wissen, wenn der nächste Request nach dem Dokument eingeht. Es ist nicht notwendig, das System zu überwachen und auf Vorrat Dateien zu cachen.

          Lo!

  1. Hallo,

    Ist es geschickt, die Benachrichtigung periodisch/automatisch (d.h. via Notification (inotify)) auszulösen?

    Problemfall: Hochladen mehrerer Dateien.
    Angenommen, dass Hochladen einer (grösseren) Datei wurde gerade abgeschlossen, zufällig wird die periodische Überprüfung kurz darauf ausgelöst die bemerkt, dass im entspr. Verzeichnis Änderungen stattgefunden habe - und löst den Versand der E-Mail aus. Beim Abarbeiten einer Warteschlange kann es also vorkommen, dass die Benutzer mehrere Benachrichtigungen bekommen.
    Denkbar wäre auch der Fall, dass du eine Datei hochlädst, kurz darauf wird die Überprüfung ausgeführt, danach löscht du die Datei wieder - und die Benutzer sind irritiert darüber, was sich nun geändert haben soll.

    Ähnlich (bzw. drastischer) dürfte die Situation sein, wenn die Benachrichtigung via Notification ausgelöst wird.

    Ich sehe nicht, wie man den Abschluss der Arbeit (das Hochladen) automatisch feststellen könnte, um erst dann die gewünschten Benachrichtigungen zu versenden - m.E. sollte man dies manuell anstossen.

    Gruss,
    Worf