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

Status
Für weitere Antworten geschlossen.

Anon382

Gesperrt
Mitglied seit
30. Aug 2010
Beiträge
9
Punkte für Reaktionen
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 :eek:

MfG
Achim S.
 

Anon382

Gesperrt
Mitglied seit
30. Aug 2010
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
sehr schön, das werd ich mal antesten, Danke...
 

Anon382

Gesperrt
Mitglied seit
30. Aug 2010
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
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
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
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 *
 

Anon382

Gesperrt
Mitglied seit
30. Aug 2010
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Alles klar...

Kannst du mir das mit dem Interpreter noch kurz erklären?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
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 ;)
 

Anon382

Gesperrt
Mitglied seit
30. Aug 2010
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
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:

Osno11

Benutzer
Mitglied seit
28. Jul 2010
Beiträge
86
Punkte für Reaktionen
0
Punkte
0
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?
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Hier wäre mal das PHP-Manual zu diesem Thema ... man kann das also recht gut nachlesen.

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
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