Ich suche nach einer Möglichkeit, auf einem Webserver mit Apache, PHP
und MySQL entweder durch Zusenden einer Mail oder einfach so (Polling)
regelmäßig ein PHP-Skript auszulösen, welches dann weitere Aufgaben
erfüllt.
Soweit mir bekannt ist, wird PHP ausgeführt, während eine PHP
enthaltende Seite aus dem Server "gelutscht" wird, was ja eigentlich nur
beim Abruf per Browser oder einer anderen aktiven Instanz (Programm auf
Rechner) passiert.
Ich hab' schon mal was von sog. "Chronjpbs" gehört, aber auch die setzen
einen Rechner und vor Allem Linux-Kenntnisse und Server-Zugriff auf
einem Level voraus, die ich nicht habe.
Theoretisch kann sich ja ein PHP-Skript auch selber aufrufen, aber geht
das ohne dass es von irgendwelchen Sicherheitsmechanismen auf dem Server
abgewürgt wird? Ist das zuverlässig? Danke für Tips.
Ein auf einem Webserver liegendes PHP-Skript kann nur dann in einem
anderen Kontext als der Darstellung einer Webseite aufgerufen werden,
wenn weitergehender Zugriff auf das Betriebssystems des Rechners
besteht, auf dem der Webserver läuft. Eben per cron-job (auf unixoiden
Systemen), per Task-Planner (Windows) o.ä.
Das von Dir abschließend angesprochene "Selbstaufrufen" eines
PHP-Skriptes wird vom Webserver gezielt unterbunden, und das ist auch
gut so. Bedenke: Auf so einem Webserver ist man nicht alleine, der soll
auch die Anfragen etlicher weiterer Anwender bearbeiten, und deswegen
ist die Ausführungszeit von CGI-Funktionen o.ä. so kurz wie nur möglich
zu halten -- und wird bei Überschreiten hart abgebrochen.
Weas für ein Problem versuchst Du zu lösen?
Rufus Τ. Firefly schrieb:> Weas für ein Problem versuchst Du zu lösen?
Den regelmäßigen Abruf (und eine Reaktion darauf) auf bestimmte Zustände
und Ereignisse. Z.B. Mailabruf und bei bestimmtem Inhalt SMS-Versand per
Sipgate-API. Oder Messwerte aus einem Empfänger lesen und in MySQL
eintragen usw.
Habe aber vor Ort keinen Rechner, der das zuverlässig erledigt bzw.
"nur" ein Qnap, aber keine Ahnung von den erforderlichen Linux-Untiefen.
Ausserdem ist dann noch ein weiterer Player im Boot. Wär gut, wenn der
Webserver (oder irgendwas dort) das alleine könnte.
Ein Webserver allein erledigt keine zeitgesteuerte Aktivitäten. Nicht
sein Job. Insofern ist es schnuppe wo der Server steht, das Problem
bleibt das Gleiche. Irgendwo muss jemand ab und zu was auslösen, und
wenns eine automatische Task auf deinem PC ist, die eine bestimmte
PHP-Seite vom Webserver aufruft.
Avr Nix schrieb:> Vielleicht sowas hier http://www.cron-job.org/cgi-bin/cronweb> der ruft dann deine Seite auf den Webserver auf.
Das sieht eigentlich ganz gut aus, aber wie zuverlässig ist das?
Ausserem ist mein Bedarf eher auf ein Intranet bezogen, das würde
zusätzlich ein Loch im System bedeuten ... verflixt aber auch!
Muss ich mich wohl doch mit dem Qnap auseinandersetzen. Habe hier eine
Anleitung gefunden, aber bisher keine Ahnung, ob ich das verstehen
werde:
http://wiki.qnap.com/wiki/Add_items_to_crontab
Frank schrieb:> Wär gut, wenn der Webserver (oder irgendwas dort) das alleine könnte.
Wenn auf dem Webserver ein UNIX/LINUX Betriebssystem läuft, ist ein
CRON-Job schon der richtige Ansatz, um regelmäßige Aufgaben ausführen zu
lassen.
Zum Editieren der Cron-Tabelle benötigst Du nur einen User-Account zum
Betriebssystem des Webservers. Das muß nicht unbedingt ein lokaler
Zugang sein, es reicht, wenn Du Telnet- oder SSH-Zugang für Fernzugriff
hast.
Frag einfach den Administrator des Servers, ob er Dir einen Telnet (eher
unsicher) oder einen SSH-Zugang zum Rechner einrichtet, und zwar einen,
bei dem User-Crontabellen nicht gesperrt sind.
Es ist kein Root-Zugang zum Server notwendig, auch User können eigene
Crontabellen haben und anlegen, wenn der Administrator das Feature nicht
sperrt.
Und wenn Du dann diesen User-Account mit Fernzugriff auf dem Rechner
hast und ein Windows-Nutzer bist, lade Dir "Putty" als Zugangsprogramm
herunter, logge Dich in den Rechner ein und editiere die Crontabelle!
Falls dann noch Fragen sind, was Du in die Crontabelle reinschreiben
sollst, kannst Du ja nochmal fragen.
Ach ja: Am besten übst Du auf einem beliebigen UNIX/LINUX vorher mal den
Umgang mit dem vi-Editor, schaue Dir insbesondere an, wie "Speichern und
Beenden" mit diesem Editor funktioniert! Mit dem Crontab-Editor geht es
dann nämlich genau so.
-----
Andere Möglichkeit mit "Extern-Zugriff":
Besorge Dir ein "Arduino-Uno" Board und ein "Ethernet-Shield" (mit W5100
Chip), stecke beides Zusammen, auch ein Netzwerkkabel rein und ans LAN
klemmen, und lade auf den Mikrocontroller ein kleines Programm drauf,
das in einer Endlosschleife nichts weiter macht als in regelmäßigen
Zeitabständen seine interne Zeit mit einem Zeitserver abzugleichen und
zu den von Dir vorherbestimmten Zeiten bestimmte Webseiten abzurufen.
Das würde auf einfache Art aber nur mit HTTP (nicht HTTPS) Seiten
funktionieren. Demo-Code für den Arduino kann ich Dir auf Wunsch senden.
Die Extern-Lösung kostet Dich dann nur einige Euronen extra für die
Anschaffung plus 3 Watt extra Stromverbrauch. Cronjob auf dem Server
würde nix extra kosten.
Jürgen S. schrieb:> Frag einfach den Administrator des Servers, ob er Dir einen Telnet (eher> unsicher) oder einen SSH-Zugang zum Rechner einrichtet, und zwar einen,> bei dem User-Crontabellen nicht gesperrt sind.
Das scheint hier ein lokal herumstehendes NAS zu sein:
Frank schrieb:> Muss ich mich wohl doch mit dem Qnap auseinandersetzen.
Also ist Frank sich selbst sein Administrator.
Rufus Τ. Firefly schrieb:> Frank schrieb:>> Muss ich mich wohl doch mit dem Qnap auseinandersetzen.>> Also ist Frank sich selbst sein Administrator.
Ja so ist es. Arduino ist übrigens auch eine coole Idee, kenne und
benutze das Sytsem für Hardware-Basteleien. Gibts für das Anlegen von
Cronjobs keine GUI?
Rufus Τ. Firefly schrieb:> Das scheint hier ein lokal herumstehendes NAS zu sein:>> Frank schrieb:>> Muss ich mich wohl doch mit dem Qnap auseinandersetzen.>> Also ist Frank sich selbst sein Administrator.
OH! MEIN! GOTT!
Einmal googeln wirft aus:
http://wiki.qnap.com/wiki/Add_items_to_crontab
Dann müßte er jetzt wohl tatsächlich nur noch erklärt bekommen:
- wie er Putty herunterlädt
- wie er mit Putty eine Telnet-Verbindung zum Qnap aufbaut
- wie er den Crontab-Editor von der Putty-Konsole aus startet
- was er in seiner Crontabelle als Zeile einträgt
- und wie er da mit "Speichern und Ende" wieder rauskommt.
Jürgen S. schrieb:> Dann müßte er jetzt wohl tatsächlich nur noch erklärt bekommen:> - wie er Putty herunterlädt> - wie er mit Putty eine Telnet-Verbindung zum Qnap aufbaut> - wie er den Crontab-Editor von der Putty-Konsole aus startet> - was er in seiner Crontabelle als Zeile einträgt> - und wie er da mit "Speichern und Ende" wieder rauskommt.
Mähhh!
Natürlich bekomme ich das hin, aber wenn es bequemer ginge, wärs wohl
auch nicht verkehrt. Und man fragt sich doch zurecht, wieso eigentlich
nicht?
Du startest doch dein Auto auch durch Drehen am Schlüssel oder Drücken
auf "start engine" und nicht durch Anschieben und Aufspringen, oder?
Frank schrieb:> Mähhh!>> Natürlich bekomme ich das hin, aber wenn es bequemer ginge, wärs wohl> auch nicht verkehrt.
Dann darfst Du keine linuxbasierten Produkte, sondern nur so etwas wie
den "Microsoft Home Server" oder ähnliches verwenden.
Ist so. Die Bedienphilosophie ist bei linuxbasierten Produkten halt
sehr, äh, "effizienzorientiert". Effizienz seitens des Entwicklers,
nicht des Nutzers.
Frank schrieb:> Z.B. Mailabruf und bei bestimmtem Inhalt SMS-Versand per> Sipgate-API.
Wenn du das schafft, dann wirst du sicherlich auch das Eintragen eines
Cronjobs per vi meistern. Ich bin da sehr zuversichtlich.