SELFHTML Forum Doku Wiki Blog

Forumsarchiv 2006, April
zeitlich abhängige Aktionen

archivierte Beiträge lesen

  1. PHP zeitlich abhängige Aktionen Andreas 09. 04. 2006, 12:52

zeitlich abhängige Aktionen

Andreas 09. 04. 2006, 12:52

Hallo,
ich habe eine Terminverwaltung mit php erstellt und möchte x-Tage vor einem Ereignis eine Erinnerungsmail absenden.
Meine erste Idee war per Cronjob einmal täglich ein Script auszuführen. Doch wie funktioniert das mit dem Cronjob? Welche Anforderungen gibt es an das Script? Welche (kostenlose) Dienste gibt es?

Gruß Andreas

zeitlich abhängige Aktionen

Tom 09. 04. 2006, 13:48

Hello,

> Meine erste Idee war per Cronjob einmal täglich ein Script auszuführen. Doch wie funktioniert das mit dem Cronjob? Welche Anforderungen gibt es an das Script? Welche (kostenlose) Dienste gibt es?

Dazu musst Du auf irgend einem Server Chronjobs oder "Aufgaben" einrichten können.
Dieser muss ein Werkzeug zur Verfügung bekommen, das dann die Arbeit durchführt.

Wenn alle Server auf einer Maschine liegen, ruft der Chronjob-Prozess den passenden Interpreter für Dein Script auf (im Hintergrund) und dieses führt die Aufgabe durch, so als hättest Du es über HTTP aufgerufen.

Wenn Deine Seite Besucher hat, kannst Du den Startaufruf aber auch z.B. in die Startseite einbauen. Das kostet auch nicht viel Power. Die eigentliche Aktion wird dann aber nur gestartet, wenn sie nicht schon erledigt wurde...
Du benötigst dafür aber die Möglichkeit, einen Systemaufruf durchführen zu können und eine Instanz des Interpreters in den Hintergrund zu laden, damit Dein Besucher nicht auf Erledigung des Jobs warten muss.

Welches OS hast Du für den Webserver?
Welchen Webserver hast Du?
Hast Du zugriff auf die Konsole des OS?
Darft Du Systemprogramme ausführen (lassen)?
Darfst Du Chronjobs einrichten? (dann solltest Du auch den Interpreter aufrufen dürfen)




Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau

zeitlich abhängige Aktionen

Andreas 09. 04. 2006, 14:20

Hallo,
habe ein Webpack L bei HostEurope, bin ziemlich sicher dass da kein Cronjob enthalten ist, die gibts erst bei dedicated Webspace.
Ich habe mal hier im Foum gelesen dass es Dienste bzw. Anbieter gibt die kostenlos Cronjob ausführen lassen können, Z.B. freenet oder ähnlich.

Ich hab mir auch überlegt, dass ich in die index.php diese Prüfung der Serverzeit vornehme, z.B. wenn ich täglich um 0:00 Nachts das Script ausführen lassen möchte, könnte ich bei jedem laden der Datei prüfen ob 0:00 ist oder später. Wenn Prüfaktion gestartet ist setze ich einfach ein Flag, damit das System nicht überlauft.
Wenn ein Robot oder Besucher halt erst morgens um 7:00 die Seite besucht wird das Script halt erst dann ausgeführt.
Was meint ihr, sowas wäre doch sicherlich auch machbar, bei einer halbwegs häufig besuchten Seite.

Gruß Andreas

zeitlich abhängige Aktionen

wahsaga 09. 04. 2006, 14:33

hi,

> Ich habe mal hier im Foum gelesen dass es Dienste bzw. Anbieter gibt die kostenlos Cronjob ausführen lassen können, Z.B. freenet oder ähnlich.

google: cronjob gratis

Bei solchen Diensten kannst du idR. einen HTTP-URL angeben, unter dem dein Script aufrufbar ist.

gruß,
wahsaga


--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }

zeitlich abhängige Aktionen

Tom 09. 04. 2006, 18:51

Hello,

> Was meint ihr, sowas wäre doch sicherlich auch machbar, bei einer halbwegs häufig besuchten Seite.

Du hast die Fragen bisher nicht beantwortet, oder hatte ich gar vergessen, sie zu stellen? *gg*
Nö, hab gerade nochmal nachgeschaut.

Wenn Du exec() benutzen darfst und den PHP-Interpreter damit aufrufen darfst, und die Ausführungszeit beeinflussen darfst, hast Du schon gewonnen. Dann brauchst Du nur noch zwei zeitlich statistisch gut verteilte Besucher am Tag, und alles wird gut :-))




Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau

zeitlich abhängige Aktionen

Andreas 09. 04. 2006, 21:05

Halo Tom,
sorry, hab es nicht kapiert und meine beste Strategie war es einfach zu ignorieren :)
Wie erfahr ich ob ich exec() ausfürhen kann? Ist das ein PHP Befehl?

Gruß Andreas

zeitlich abhängige Aktionen

Tom 09. 04. 2006, 21:42

Hello,

> sorry, hab es nicht kapiert und meine beste Strategie war es einfach zu ignorieren :)
> Wie erfahr ich ob ich exec() ausfürhen kann? Ist das ein PHP Befehl?

Wie erfährst Du, ob exec() eine PHP-Funktion ist?
http://de3.php.net/manual/en/index.php
oder
http://de3.php.net/manual/en/ref.exec.php
oder
http://de3.php.net/manual/en/function.exec.php

Und ob Du es benutzen darfst?
Einfach mal ausprobieren mit einem einfachen Kommando für das jeweilige OS, auf dem Dein PHP läuft.

Wenn das dann ein erwartetes Ergebnis gibt, darfst Du es benutzen.



Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau

zeitlich abhängige Aktionen

Andreas 10. 04. 2006, 08:00

Hi,
echo exec('whoami');
gibt "nobody" auf dem Bildschirm aus.
Bedeutet das ich kann exec() einsetzen?

Gruß Andreas

zeitlich abhängige Aktionen

Ashura 10. 04. 2006, 15:17

Hallo Andreas.

> echo exec('whoami');
> gibt "nobody" auf dem Bildschirm aus.
> Bedeutet das ich kann exec() einsetzen?

Ja, „nobody“ ist hier also der Username, unter dem der Apache läuft.


Einen schönen Montag noch.

Gruß, Ashura

--
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
„It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
[HTML Design Constraints: Logical Markup]

zeitlich abhängige Aktionen

Tom 11. 04. 2006, 09:43

Hello,

> > echo exec('whoami');
> > gibt "nobody" auf dem Bildschirm aus.
> > Bedeutet das ich kann exec() einsetzen?
>
> Ja, „nobody“ ist hier also der Username, unter dem der Apache läuft.

Der nächste Schritt wäre nun, zu prüfen, ob Du mittels Exec einen PHP-Interpreter starten darfst.



<?php  ### start_process.php ###
$pid=exec("/usr/local/bin/php run.php > /dev/null & echo \$!",$_ergebnis,$error);

echo "<pre>\n";
echo "Prozess-Nummer: $pid \n";
echo "Fehlercode: $error \n";
echo "</pre>\n";

?>


und

<?php  ### run.php ###

  file_put_contents('testausgabe.txt','Prozess konnte gestartet werden\n"');

?>

Erstmal so zum Testen.

Dann wäre noch spannend, ob Du auch set_time_limit(0) verwenden darfst.
http://de2.php.net/manual/de/function.set-time-limit.php

Dann könntest Du nämlich einen Prozess abspalten, der im Hintergrund dauernd läuft und seinerseits wieder Prozesse ausführen lassen kann.



Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau

zeitlich abhängige Aktionen

at 12. 04. 2006, 22:47

Hallo.

> habe ein Webpack L bei HostEurope, bin ziemlich sicher dass da kein Cronjob enthalten ist, die gibts erst bei dedicated Webspace.

Chronisch ungünstig.
MfG, at

zeitlich abhängige Aktionen

Alexey 09. 04. 2006, 13:49

Was genau meinst du? Ein Cronjob ist einfach ein Befehl der von einem 24/7 laufenden Daemon ausgeführt wird. Der muß dann halt ein php-sript aufrufen, welches dann alle Termine durchgeht und schaut ob die einer Errinerung bedürfen. Was meinst du mit Dienste? Ein Cron-Daemon an sich ist natürlich kostenlos, aber niht jeder hat bei seinem Webpacket Cronjobs drin. Wir können dir ja nicht sagen welchen Leistungsumfang dein Paket hat.

© 1998-2014 SELFHTMLImpressumSoftware: Classic Forum 3.4