Dennis: PHP per Cronjob ansprechen

Beitrag lesen

Hi Heidenreich,

Ich möchte gerne eine PHP Datei z.B. minütlich(nur als Beispiel) ausführen.
Wäre ja dann:
1 * * * * pfad/datei

Das würde die Datei nur stündlich, nicht minütlich ausführen. Denn diese Anweisung
bedeutet, dass der nachfolgende Befehl immer dann auszuführen ist, wenn die Minute
01 ist, also um 11:01 Uhr, 12:01 Uhr, 13:01 Uhr usw.

Das nächste Problem: Hinter den Zeitangaben muss ein Ausdruck stehen, der mit der
Shell ausgeführt werden kann. Im einfachsten Fall kann das der Pfad zum Script sein,
aber nur unter den folgenden Bedingungen:
 1) Der Pfad muss absolut angegeben werden, bei Confixx dürfte der absolute Pfad
    in etwa so aussehen: /home/www/webXX/html/ordner/script.php
    (relative Pfade sind prinzipiell auch möglich, allerdings müsste man dann
    wissen, in welchem Ordner (CWD) der Cron-Daemon den Befehl absetzt)
 2) Das PHP-Script muss ausführbar sein, d.h. es muss das X-Bit gesetzt haben, die
    Rechte für das Script könnten also z.B. 0750 oder 0755 sein, bzw. in anderer
    Schreibweise -rwxr-x--- oder -rwxr-xr-x, wichtig ist wie gesagt das X für
    mindestens den Besitzer, am besten auch noch für die Gruppe
 3) Nur weil die Dateiendung .php lautet, führt Linux das Script deshalb noch lange
    nicht mit PHP aus. Deshalb muss in der ersten Zeile eine sog. Shebang angegeben
    werden, welche den Pfad zur ausführbaren PHP-Datei angibt, das dürfte unter den
    meisten Linux Systemen so aussehen: #!/usr/bin/php

Es gibt aber auch noch eine Alternative: Und zwar kannst du den Befehl in der Crontab
so umbauen, dass du die Shebang Zeile im PHP-Script nicht brauchst und auch keine
Ausführrechte (X-Bit) für das PHP-Script setzen musst.

Dafür trägst du in der Crontab einfach direkt PHP ein und übergibts als ersten
Parameter den Pfad zu dem auszuführenden PHP-Script, das sieht dann z.B. so aus:

m h  dom mon dow   command

* *  *   *   *     /usr/bin/php /home/www/webXX/html/ordner/script.php

Stelle ich mich nur so doof an, oder ist das ganze wirklich so schwierig? Finde auch
nirgendwo ein *brauchbares* Tutorial.

Das glaube ich dir jetzt allerdings nicht ;-) Tutorials gibts genug und auch hier im
Archiv dieses Forums dürftest du einiges zu dem Thema finden.

Viele Grüße,
  ~ Dennis.