Scripting

ID #1090 PHP-Scripte auf der Commandozeile / per Cron ausführen

Problem:

Manche Dinge (Newsletter-Versand, Datenbank-Aktionen, etc.) will man gerne Zeitgesteuert starten. Andere Funktionen möchte man aus Sicherheitsgründen ausserhalb des Web-DocumentRoots verstecken. Oder man will auch Scripte für die Systemadministration schreiben, ohne Perl- oder Shell-Script-Programmierung zu erlehrnen.

Schließlich können PHP-Scripte auch in der Commando-Zeile ausgeführt werden. Was ist aber dabei zu beachten?

Ansatz 1:

PHP-Scripte als Browser-Aufrufe.
Es gibt zwei Programme die (z.B. per Cron/Shell) PHP-Scripte per URL aktivieren können: <code>wgetcode> und <code>lynxcode>. (Es gibt noch weitere Consolen-Webbrowser, aber ich bleib mal bei den beliebtesten.)
Ein Aufruf könnte dann so aussehen:

wget 'http://www.meinedomain.tld/admin/newsletter.php'
Mithilfe von Pipes kann man sich das Ergebnis z.B. dann zumailen lassen oder in ein Logfile schreiben.

Nachteil:
Die Scripte sind an die Ausführungszeiten des Webservers/PHP gebunden. Sprich, wenn das Script nicht innerhalb der (z.B.) eingestellten 30 Sekunden zum Ende kommt, wird es abgebrochen.

Ansatz 2:

PHP-Scripte per CLI aufrufen.
CLI ist das 'Command-Line-Interface' von PHP. Soll eißen: Ein PHP-Interpreter ohne Webserver (vergleichbar mit <code>perlcode>). Unter Linux/Unix wird dieser mit <code>php script.phpcode> gestartet.
Ein Eintrag im Cron braucht aber immer die vollständigen Pfade:

/usr/bin/php /home/www/webX/html/admin/newsletter.php
(Auch hier kann wieder mit Pipes gearbeitet werden.)

Nachteil:
Eine evtl. vorhandene User-Authentifizierung kann weder per HTTP-Protokoll noch per Cookie statt finden.

Ansatz 3:

Reine PHP-Scripte für die Shell.
Der Ansatz ist der selbe wie beim Zweiten. Diesmal soll aber der expliziete Aufruf des PHP-CLI gesparte werden, so daß ein <code>./newsletter.phpcode> bereits das gewünschte erreicht:
Dazu muß eine Shebang-Zeile in das PHP-Script eingefügt werden:

#!/usr/bin/php
und danach das Script mit Ausführungsrechten versorgt werden:
chmod +x newsletter.php
(Nun könnte man die Ändung <code>.phpcode> übrigends auch weg lassen.)

Nachteil:
Die Scripte sind so nicht mehr fürs Web zu gebrauchen. Ausser man führt sie als CGI aus. (Endung von <code>.phpcode> zu <code>.cgicode> ändern.)

 

sozial Bookmarking
Bookmarken bei YIGG Bookmarken bei Mister-Wong Bookmarken bei Icio Bookmarken bei del.icio.us Bookmarken bei Technorati Bookmarken bei Furl Bookmarken bei Spurl Bookmarken bei Yahoo Bookmarken bei Google

huschi, zuletzt 2006-01-03 18:38     Artikel ausdrucken Artikel weiterempfehlen Als PDF-Datei anzeigen

Dieser Inhalt ist unter der Creative-Commons Lizenz lizensiert.

Probleme bitte im Server-Support-Forum diskutieren.

überflüssig 1 2 3 4 5 wertvoll  
Durchschnittliche Bewertung:   4.64 von 5 (11 Bewertungen)

Artikel kommentieren