Shellprogrammierung mit CakePHP
Wer bei CakePHP einsteigt fängt möglicherweise mit der Generierung über die Cake Console an. CakePHP verfügt nämlich über einige Befehle, die ganze Anwendungen erzeugen können. Scaffolding, Bake und die Console sind die Stichworte und vieles davon kann im Handbuch nachgelesen werden. Lohnt auf jeden Fall.
Für eine aktuelle Anwendung habe ich ebenfalls mit Shell-Scripten gearbeitet. Allerdings setzt es voraus, dass man die Möglichkeit hat, Cronjobs aufzusetzen. Ist also mit einfacheren Webspace-Angeboten meist nicht zu realisieren. Wenn man aber die Möglichkeit hat, lohnt es auf jeden Fall darüber nachzudenken, welche Aufgaben einer Anwendung im Hintergrund ablaufen könnten. Bei Anwendunge beispielsweise könnte der Versand der Benachrichtungsmail auch kurze Zeit später erfolgen. Somit kann die Webanwendung im Vordergrund von dieser Aufgabe entlastet werden.
In Cake Shellanwendungen hat man Zugriff auf Models und kann also prima Daten aus der Datenbank auslesen und somit die Emails für den Versand entsprechend versenden, wenn die Markierungen in der Datenbank sind.
class NotificationShell extends Shell { var $User = null; function main() { $this->User = ClassRegistry::init('User'); $data = $this->User->find('all'); // $data verarbeiten } }
Genauso einfach wie man Models instanzieren kann, lassen sich auch Komponenten laden und benutzen, wie beispielsweise die TwitterComponent.
if (is_null($this->Twitter)) { App::import('Component', 'Twitter'); $this->Twitter = new TwitterComponent(); $this->Twitter->username = 'twittername'; $this->Twitter->password = 'meinPasswort'; }
Cake Shellscripte werden dann einfach über den cake Befehl in der Form
cake notification
aufgerufen. Das Shell-Script wird in APP/vendors/shells angelegt und bekommt den gleichen Namen wie die Shell. Also im obigen Beispiel wird die NotificationShell in der Datei notification.php angelegt.