PHP per Cronjob ansprechen
Heidenreich
- php
Hallo zusammen,
habe mal eine Anfängerfrage.
Arbeite mit einem 08/15 Webspace, mit Parallesl Confixx. Can da auch Cronjobs anlegen(theoretisch) aber irgendwie funzt es nicht.
Ich möchte gerne eine PHP Datei z.B. minütlich(nur als Beispiel) ausführen.
Wäre ja dann:
1 * * * * pfad/datei
Jetzt habe ich schon längere Zeit gesucht, und bin oft darauf gestossen, das ich in der PHP-Datei noch sowas eingeben müsste:
#!/usr/bin/php
Woher weiss ich denn wo der Interpreter liegt?
Stelle ich mich nur so doof an, oder ist das ganze wirklich so schwierig? Finde auch nirgendwo ein *brauchbares* Tutorial.
Wäre über jede Hilfe dankbar
Gruß
Heidenreich
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:
* * * * * /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.
Hi,
danke Dir schonmal für Deine Hilfe.
habe es jetzt hiermit probiert,
* * * * * /usr/bin/php /home/www/webXX/html/ordner/script.php
allerdings klappt es nicht.
Ich bekomme auch keine Fehlermeldung oder so per Mail (hatte ich z.B. vorher, als ich es, wie in einem anderen Forum beschrieben, mit wget versucht habe).
Es tut sich einfach gar nichts.
Habe die Pfade und so natürlich auf mich angepasst.
Zu testzwecken soll die PHP-Datei einfach ne mail an mich versenden, läuft auch wenn ich die Datei so anspreche.
Irgendeine Ahnung wodran es liegen könnte? Kann wie gesagt keine genauere Fehlerbeschreibung angeben.
gruß
heidenreich
Hallo malwieder,
so der Cronjob läuft, allerdings bekomme ich auch jedesmal eine Mail mit diesem Inhalt:
PHP Warning: Zend Optimizer for PHP 5.2.x cannot be found (expected at '/usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so') - try reinstalling the Zend Optimizer in Unknown on line 0
kann mir jemannd sagen wodran das liegen könnte?
Danke Euch
Gruß
Heidenreich
Hi Heidenreich,
so der Cronjob läuft, allerdings bekomme ich auch jedesmal eine Mail mit diesem Inhalt:
PHP Warning: Zend Optimizer for PHP 5.2.x cannot be found (expected at '/usr/local/Zend/lib/Optimizer-3.3.0/php-5.2.x/ZendOptimizer.so') - try reinstalling the Zend Optimizer in Unknown on line 0
Klingt so, als ob PHP nicht richtig konfiguriert wäre und display_startup_errors aktiviert ist. Wende dich bitte an deinen Hoster mit der Bitte, er möge sein PHP-CLI richtig konfigurieren.
Viele Grüße,
~ Dennis.
Hi,
sorry das ich mich erst so spät melde, musste aber die letzten Tage sehr viel Arbeiten.
Klingt so, als ob PHP nicht richtig konfiguriert wäre und display_startup_errors aktiviert ist. Wende dich bitte an deinen Hoster mit der Bitte, er möge sein PHP-CLI richtig konfigurieren.
Habe mal in der PHP-Info nachgeschaut, display-startup-errors steht auf off. Und das script läuft ja auch einwandfrei. Werde mal meinen Hoster anschreiben, mal gucken was er sagt.
Danke auf jedenfall für Eure Hilfe
Gruß
Heidenreich
Hi,
du kannst auch mit
* * * * * lynx --dump -auth=Benutzername:Passwort http://www.example.de/cron/script.php
das Script laufen minütlich lassen (das Verzeichnis http://www.example.de/cron/ wäre dann durch Benutzername und Passwort geschützt)
bye trunx