Monatsarchiv für Mai 2011

 
 

PHP-Skript im Hintergrund ausführen #2

Die bereits erwähnte Methode über Content-Length funktioniert zwar etwas hakelig, ist aber in Webspace-Umgebungen oft die einzige Methode ein PHP-Skript im Hintergrund auszuführen.

Eine andere Methode (neben dem Cronjob) besteht darin, über exec einen Hintergrundprozess zu starten. Beispiel (Linux only):

<?php exec('/usr/bin/php -f /var/www/cron.php > /dev/null &') ?>

Mit -f wird die auszuführende Datei angegeben. In Shared-Hosting-Umgebungen wird man keinen Zugriff auf die php-binary haben. Wget hingegen sollte verfügbar oder zumindest installierbar sein. Mit wget kann man prima “Cronjobs” über HTTP-GET im Hintergrund anstoßen:

<?php exec('wget -bq -o /dev/null -O /dev/null -t 1 http://www.example.org/cron.php') ?>

Wget’s Parameter sind case-sensitive. -b sorgt dafür, dass der wget-Prozess im Hintergrund ausgeführt wird, -q unterdrückt jegliche Ausgabe, -o leitet die heruntergeladene Datei nach /dev/null, -O schreibt das Logfile ebenfalls ins Nirvana und -t 1 unternimmt nur einen Versuch die folgende URL aufzurufen.

reCAPTCHA Tricks ;)

reCAPTCHA ist ein sehr verbreiteter Captcha-Service der von Google betrieben wird. Viele Webseiten zeigen via reCAPTCHA-Webservice diese Captchas an, um Ihre menschlichen Besucher von Bots zu unterscheiden. Das Besondere: mit reCAPTCHA werden Bücher digitalisiert, bzw. OCR-Ergebnisse überprüft. Zur Lösung muss der Benutzer zwei Wörter eingeben, wovon aber nur eines bei reCAPTCHA bekannt ist. Beide Wörter stammen aus einem Buch-Scan (Google Books – aber auch andere). Das bekannte Wort wurde bereits durch reCAPTCHA-Benutzer bestätigt oder hat grundsätzlich eine hohe OCR-Genaugigkeit – das unbekannte hat eine niedrige Genauigkeit.

Beide Wörter werden zusätzlich verformt. Früher wurden auch verschiedene Objekte oder Striche über die Texte gelegt. Zur erfolgreichen Lösung reicht die Übereinstimmung des bekannten Wortes. Die Eingaben zum anderen Wort werden lediglich erfasst und bei entsprechender Häufung dazu verwendet das OCR-Ergebnis zu korrigieren bzw. zu bestätigen.

Das erklärt auch, warum bei reCAPTCHA teilweise wirre Worte erscheinen.

In diesem Fall genügt es einfach das zweite Wort einzugeben. Das erste kann frei erfunden werden. Captcha gelöst! Wer also nicht beim Digitalisieren behilflich sein will, der hält sich nicht lange mit dem entziffern auf, sondern gibt irgendetwas ein – das bekannte Wort (und nur darauf kommt es an) ist meist ohne viel Rätseln lesbar.