PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Archive for the ‘Cronjob’ tag

Das Test-Fax-Projekt kurz vorgestellt

with 18 comments

Mir ist aufgefallen dass ich noch gar nichts über mein Test-Fax-Projekt geschrieben habe. Um etwas mit Fax-Dokumenten zu arbeiten und zu spielen habe ich vor einigen Monaten die kleine Webseite http://www.test-fax.de erstellt. Dort kann man sein neues Fax-Gerät oder seine neue Fax-Software testen indem man einfach ein Fax an die angezeigte Nummer schickt.

Das empfangene Fax landet in einem IMAP-Postfach, das ich mit PHP periodisch abfrage. Falls ein Fax, das in diesem Fall ein tiff-Anhang an der E-Mail ist, vom Cronjob-Script gefunden wird, extrahiere ich den Anhang, wandle es in ein png Bild um, erstelle ein Vorschaubild und trage es in eine Datenbank ein. Die Webseite ist dann einfach nur eine Anzeige der empfangenen Faxe, wobei es auch eine kleine Javascript-Funktionalität gibt die das Backend alle 10 Sekunden nach neu empfangenen Fax-Bildern befragt.

Weiterlesen »

Written by Michael Kliewe

November 4th, 2011 at 9:54 am

Mehrere Scripte via Cronjob parallel aufrufen

with 15 comments

Heute ein kleines Problemchen mit Cronjobs und Parallelität. Normalerweise empfehle ich Gearman wenn es darum geht, mehrere Scripte im Hintergrund laufen zu lassen, aber nehmen wir an dass wir es mit normalen Cronjobs ohne Gearman lösen wollen.

Wir haben also das Script work.php. Wir möchten alle 5 Minuten die Datenbank prüfen ob es Arbeit gibt, und wenn dem so ist, dann soll die Arbeit erledigt werden. Das geht relativ einfach mit einem Cronjob

*/5 * * * * /usr/bin/php /data/work.php

und in der work.php findet dann die Datenbankabfrage statt. Wenn X Ergebnisse in der Datenbank gefunden werden, wird eine Schleife X mal durchlaufen um alles abzuarbeiten. So weit so gut.

Nun sei die eigentliche Arbeit aber relativ zeitaufwändig, sodass ein Schleifendurchlauf 2 Minuten dauert, und bei 5 Aufträgen dauert es also 10 Minuten (wir arbeiten ja seriell in einer Schleife), der Aufruf von work.php überlappt und wir bekommen ein Problem. Angenommen die Aufgabe ist parallelisierbar, d.h. wenn man alle 5 Aufgaben zeitgleich starten würde gäbe es keine Probleme, und die ganze Arbeit wäre nach 2 Minuten erledigt. Wir könnte man soetwas einfach realisieren?

Weiterlesen »

Written by Michael Kliewe

Juli 19th, 2011 at 9:25 am

Posted in PHP

Tagged with , ,