Forum: PC-Programmierung Durch EMail oder Zeitschleife ein PHP-Skript starten?


von Frank (Gast)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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?

von Frank (Gast)


Lesenswert?

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.

von (prx) A. K. (prx)


Lesenswert?

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.

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Vielleicht sowas hier http://www.cron-job.org/cgi-bin/cronweb
der ruft dann deine Seite auf den Webserver auf.

von Frank (Gast)


Lesenswert?

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

von ihde (Gast)


Lesenswert?

Frank schrieb:
> Das sieht eigentlich ganz gut aus, aber wie zuverlässig ist das?

So zuverlässig wie dein restliches System.

von ihde (Gast)


Lesenswert?

Ansonsten gibt es noch ~/.forward damit lassen sich mails durch scripte 
jagen.

von (prx) A. K. (prx)


Lesenswert?

Jo, aber wo schon cron zu viel Linux ist...

von Jürgen S. (jurs)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Frank (Gast)


Lesenswert?

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?

von Jürgen S. (jurs)


Lesenswert?

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.

von Frank (Gast)


Lesenswert?

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?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Konrad S. (maybee)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.