[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
email nach upload - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Muotoilija
Beiträge: 146
Registriert: 20. Mär 2007, 10:08
Wohnort: Tampere/ Finnland
Kontaktdaten: Website

email nach upload

24. Feb 2010, 08:55

Hallo...

gibt es eine Möglichkeit, eine automatisch generierte Benachrichtigungsmail versenden zu lassen, nachdem eine Datei in ein bestimmtes Verzeichnis per FTP auf den Webserver geladen wurde?
Ich stelle mir das so vor: jemand lädt ein jpg-Bild hoch, der Server denkt sich, aha, neue Datei, und verschickt dann eine Nachricht per email, dass sich eine neue Datei auf dem Webserver befindet.
Gibt es dafür eine Lösung?!

VG Chris

Benutzeravatar
Cheffchen
Beiträge: 1809
Registriert: 3. Mär 2009, 13:51
Wohnort: Berlin
Kontaktdaten: Website

24. Feb 2010, 11:22

Hallo,

Lösung nicht aber vielleicht Idee:
Eine PHP Datei die per cronjob Täglich gestartet wird Öffnet den Ordner X und Zählt den Inhalt und Speichert das in einer txt Datei. Am nächsten Tag das gleich aber jetzt halt immer das Ergebnis aus der txt mit verglichen und wenn die Anzahl anders ist geht halt eine mail raus.

Cheffchen

jones
Beiträge: 16
Registriert: 15. Mai 2009, 20:00

24. Feb 2010, 22:19

So könnte mans machen.

Code: Alles auswählen

0
<?php
ini_set('display_errors',1);
error_reporting(E_ALL|E_STRICT);
/*
Überprüft die Anzahl von Dateien eines bestimmten Dateityps und verschickt eine Email wenn sich diese seit dem letzten Aufruf verändert hat. 	
Das Script benutzt die erste Zeile um die Anzahl der Dateien zu speichern.
Also bitte nicht löschen. ;)
*/

$directory = ""; // Ordner in dem die Dateien gezählt werden sollen
$script = "/var/www/html/count.php"; // Absoluter Pfad und Dateiname des Scripts

// Letzen Wert einlesen
$f = file_get_contents($script);
$f = explode("\n",$f,2);
$f[0] = trim($f[0]);

// Wenn im Ordner Dateien bestimmten Typs vorhanden zähle diese (in diesem Falle .jpg Dateien)
if (glob("" . $directory . "*.jpg") != false) {
	$filecount = count(glob("" . $directory . "*.jpg"));
}
else {
	$filecount = 0;
}

// Wenn die Anzahl der Dateien sich seit dem letzten Aufruf des Scripts geändert haben, schreibe neue Anzahl.
if ($f[0] != $filecount) {
	$f[1] = trim($f[1]);
	file_put_contents($script,$filecount."\n".$f[1]);
	mail('mail@mail.de', 'Dein Betreff', 'Deine Nachricht'); // und Email versenden
}
?>
Man könnte auch ne Funktion draus machen und sie ins Template einbauen, dann wird jedes mal wenn die Seite aufgerufen wird geprüft.
Zuletzt geändert von jones am 10. Jan 2011, 22:15, insgesamt 1-mal geändert.

Muotoilija
Beiträge: 146
Registriert: 20. Mär 2007, 10:08
Wohnort: Tampere/ Finnland
Kontaktdaten: Website

26. Feb 2010, 21:33

Danke für eure Antworten!

Mir wäre schon wichtig, dass allein der Uploadvorgang unmittelbar den Versand der email auslöst.

Das obige Skript habe ich jetzt angepasst (also "Absoluter Pfad und Dateiname des Scripts" und meine email-Adresse) aber irgendwie funzt das noch nicht...
Wie schon gesagt sollte nach dem Upload die Nachricht verschickt werden und nicht nach Aufruf einer bestimmten Website. Wodurch wird dieses Skript überhaupt aufgerufen?

VG Chris

Benutzeravatar
Cheffchen
Beiträge: 1809
Registriert: 3. Mär 2009, 13:51
Wohnort: Berlin
Kontaktdaten: Website

26. Feb 2010, 23:45

Hallo,

also direkt nach Upload eine Mail geht nicht. Eine Datei muss das ja überwachen und die muss ja gestartet werden.
Der Script oben Starten über ein cronjob zu festen Zeiten (Täglich, Stündlich oder...)

Cheffchen

jones
Beiträge: 16
Registriert: 15. Mai 2009, 20:00

27. Feb 2010, 13:01

Cheffchen hat geschrieben:Hallo,
Der Script oben Starten über ein cronjob zu festen Zeiten (Täglich, Stündlich oder...)
Cheffchen
Richtig.

Du kannst, wenn du keine Crons ausführen darfst, den Code oben auch in dein Template einbauen. So kannst du die Seitenbesucher nutzen um das Skript regelmäßig auszuführen. Dann musst du allerdings eine Datei anlegen (chmod:644) und sie hier einbinden:
z.B.

Code: Alles auswählen

$script = "/var/www/html/counter.txt";
Er muss ja die Anzahl der Dateien irgendwo speichern.

Grüße

Muotoilija
Beiträge: 146
Registriert: 20. Mär 2007, 10:08
Wohnort: Tampere/ Finnland
Kontaktdaten: Website

5. Mär 2010, 09:12

Hei,

danke für die Info!

wir haben jetzt unseren Vertrag beim Provider erweitert und können jetzt cronjobs ausführen. Doch nach einigen Stunden Herumprobieren war ich gestern mit meinem Latein am Ende...
Ich bekam laufend Fehlermeldungen per email. Die letzte begann mit

Could not open input file.

Der Provider sagt, dass der Fehler auf das Skript zurückzuführen ist und kann daher keinen weiteren Support geben.
In das obige Skript habe ich in der ersten Zeile den Pfad zu PHP eingebunden, wie es in der Anleitung im Kundenmenü stand:

#!/usr/local/bin/php

Das Skript wäre uns sehr wichtig. Ich wäre für weitere Hilfe sehr dankbar.

VG Chris

Benutzeravatar
TInKim
Beiträge: 420
Registriert: 23. Mär 2007, 16:16
Wohnort: Kiel
Kontaktdaten: Website

5. Mär 2010, 11:13

Ich möchte anmerken, dass der Ansatz von jones unzuverlässig ist, in dem Sinne, dass die Anzahl der Dateien ein schlechter Gradmesser ist, ob sich etwas geändert hat oder nicht.

Wenn jetzt jemand eine Datei zwischendurch wegputzt und eine kommt dazu, noch bevor der nächste Cron durchlaufen ist, geht's schief. Wobei das jetzt sehr akademisch sein mag. Für solche Operationen sind eigentlich Hashes das Mittel der Wahl.

Ich würde den Cronjob nutzen, um den Verzeichnisinhalt samt Dateigrößen und -Dateiänderungsdaten in einen Hash umzuwandeln und mir diesen merken, z. B. in einer Minidatenbank oder eben in einer Textdatei (die muss natürlich außerhalb des Überwachungsordners) liegen.

--- Und hier stand Quatsch: Hab das mit FTP überlesen. ---

Wenn es kein super vollgestopfter Ordner ist, der da überwacht werden soll, kannst Du den Cron ja auf eine Minute stellen, sollte nicht weh tun.

jones
Beiträge: 16
Registriert: 15. Mai 2009, 20:00

5. Mär 2010, 12:00

Ich möchte anmerken, dass der Ansatz von jones unzuverlässig ist, in dem Sinne, dass die Anzahl der Dateien ein schlechter Gradmesser ist, ob sich etwas geändert hat oder nicht.
Da muss ich TInKim recht geben. :)

Muotoilija
Beiträge: 146
Registriert: 20. Mär 2007, 10:08
Wohnort: Tampere/ Finnland
Kontaktdaten: Website

5. Mär 2010, 18:00

Das klingt sehr vielversprechend! Wenn ich bloss wüsste wie ich das umsetzen soll... :(

Zurück zu „Sonstiges“