Cronjob soll php-Datei ausführen (für Dummies)

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

Anon382

Gesperrt
Registriert
30. Aug. 2010
Beiträge
9
Reaktionspunkte
0
Punkte
0
Hallo zusammen,

ich habe auf meiner DS ein Webanwendung laufen.
Laut Hersteller soll eine php-Datei mittel eines Cronjobs alle Stunde ausgeführt werden.

Da ich nun absoluter Neuling bin und die Beiträge welche ich zu Cronjobs gefunden habe mich als Newbie überfordern, hoffe ich mal hier eine Antwort zu bekommen, was ich im Einzelnen tun muss damit ich so einen Cronjob implementieren kann.

PS: Auch im Umgang mit Linux ist es nicht weit her :o

MfG
Achim S.
 
Hab ich das in der Crontab so richtig gemacht?
die Datei "cj.php" soll stündlich ausgeführt werden...
Es geht mir um Zeile 2.

Rich (BBCode):
#minute hour    mday    month   wday    who     command
0       1       *       *       0       root    /usr/syno/bin/synolocalbkp -a "Komplettsicherung"
00      */1     *       *       *       root    /volume1/web/cj/cj.php
 
Die Doppel 0 ist nicht nötig. Einfach reicht :)
Zusätzlich solltest du beim Kommando noch den Pfad zum PHP Interpreter angeben. Ausser du hast den Interpreter als erste Zeile deines Scriptes definiert und das Script selber ausführbar gemacht
Zusätzlich ist */1 gleichwertig zu *
 
Alles klar...

Kannst du mir das mit dem Interpreter noch kurz erklären?
 
php ist ja eine interpretierte Sprache, sprich du schreibst Quellcode und der wird dann vom Interpreter übersetzt und an die Hardware verfüttert.
Wenn du eine Webseite mit PHP Inhalten aufrufst delegiert dies der Webserver an das PHP Modul (Interpreter).
Wenn du jedoch das Script auf der Shell (z.B. Konsole oder eben cron) aufrufst, dann wird die Pfadangabe zum PHP Kommandokonsoleninterpreter benötigt, damit die Shell weiss wohin mit dem File.
Diesen Pfad findest du am schnellsten wenn du
Code:
which php
eingibst. Sollte ein Pfad unterhalb von /usr/ sein.
Dann kannst du ein Script auf der Shell so aufrufen
Code:
/pfad/zu/php /pfad/zum/script.php
Mir ist es meist zu viel Tipperei wenn ich die PHP Scripte so aufrufe;)
Drum gebe ich den Pfad zum Interpreter in der sogn shebang Zeile an. Damit wird die ERSTE Zeile eines Scriptfiles bezeichnet, welche den Pfad zum jeweiligen Interpreter angibt z.B.
PHP:
#!/pfad/zu/php
<?php
echo 'Hallo Welt';
?>
dann musst du das php File noch ausführbar machen
Code:
chmod +x /pfad/zum/script.php
und kannst es dann mit
Code:
/pfad/zum/script.php
Anhand der shebang Zeile weiss die Shell welcher Interpreter zuständig ist. Damit musst du beim Aufruf den Interpreter nicht angeben.

Lange Reder kurzer Sinn:
Entweder gibst du im cronjob den Pfad zum PHP Interpreter mit an oder du gehst den Weg über die shebang.
Nur der Pfad zum Script im cronjob ohne Interpreter oder shebang wird dazu führen, dass ein Fehler geworfen wird.
Tipp: Bevor du Scripte als crons ausführst solltest du sie unbedingt ausgiebig auf der Konsole testen ;)
 
Hallo jahlives,

erstmal vielen Danke für deine Unterstützung...
So als komplett Neuling ist das halt nicht immer alles druchschaubar :-)

Wäre es so richtig?

Rich (BBCode):
#minute hour    mday    month   wday    who     command
0       1       *       *       0       root    /usr/syno/bin/synolocalbkp -a "Komplettsicherung"
0       */1     *       *       *       root    /usr/bin/php /volume1/web/cj/cj.php

PS: Das mit dem ausführbar machen, galt das nur für die shebang Variante?
 
Zuletzt bearbeitet:
Cronjob PHP Datei

Hallo,

berichte bitte mal! Geht das wirklich so?
Nach meinem Verständnis hätte die Datei in der Cron Datei mit http://pfad_zur_php_datei.php aufgerufen werden müssen.
Woher soll denn die Syno wissen, wer den Code innerhalb der Datei (also PHP Code) auswerten kann?
 
Hier wäre mal das PHP-Manual zu diesem Thema ... man kann das also recht gut nachlesen.

Itari
 
Woher soll denn die Syno wissen, wer den Code innerhalb der Datei (also PHP Code) auswerten kann?
Durch die vorangestellte Angabe des Interpreters resp durch die Angabe des Interpreters in the shebang Zeile
Ein Aufruf via http ruft das ganze via Webserver auf und das ist eigentlich bein einem lokalen Script unnötig. Ausserdem kannst du nicht einfach http:// schreiben, da müsstest du vorher noch sagen mit welchem Programm du die URL öffnen willst
Code:
wget http://domain.tld/pfad/datei.php
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat