Artikel im Internet unter http://www.hidemail.de/blog/perl-in-php-einbinden.shtml.
Dienstag, 1.7.2008, 11:00:25 Uhr

Perl in PHP einbinden



Manchmal ist es nützlich zu wissen, wie man ein Perl-Script in PHP einbinden kann. So vor Kurzem, als ich in Frauchens PHPbb-Forum eine kleine Funktion einfügen wollte.

Wer sich den Quellcode eines solchen Forums mal angesehen hat, der weiss, daß man da nicht mal so einfach etwas dazuprogrammieren kann, vor allem, wenn man sooo fit in PHP auch nicht ist. Wenn man allerdings das Problem in Perl quasi schon im Kopf gelöst hat, sucht man eben eine Schnittstelle von PHP nach Perl.

Also hab ich das Script erst in Perl gelöst und getestet, nun kam noch die Sache mit dem PHP dazu.

Etwas gesucht, schließlich auf folgende Lösung gekommen:

<?php
$check=@fsockopen('www.hidemail.de', 80);
if ($check){
include 'http://www.hidemail.de/cgi-bin/dingens.pl';
}
?>


Das Einbinden der Perl-Datei geschieht natürlich mit dem include-Befehl. Er öffnet auf einem Server (in dem Fall meinem) die Datei dingens.pl und bekommt als Ergebnis die Ausgabe des Perl-Scriptes zurück. Das geht natürlich auch mit normalen Dateien oder Grafiken, in meinem Fall eben mit einer Perl-Datei.

So, so weit, so gut, es funktionierte auch. Aber: Was, wenn der Server, auf dem das Perl-Script liegt, gerade nicht erreichbar ist? Klar, dann hagelt es Fehlermeldungen, PHP bricht ab, ganz unschön...

Also sollte man vorher prüfen, ob der Server erreichbar ist.
Dazu die folgender Teil im PHP-Code:

$check=@fsockopen('www.hidemail.de', 80);
if ($check){
...
}


Der befehl fsockopen öffnet ein Socket zum Server, in dem Fall Port 80, also httpd, und erst wenn dieser Kanal verfügbar ist, wird das perl-Script aufgerufen und ausgeführt.

Das Script wird also nur dann aufgerufen, wenn der Server verfügbar ist. Falls der Server mal nicht so gut drauf ist, hagelt es keine Fehlermeldungen, allerdings wird dann auch das Perl-Script nicht ausgeführt. Sollte man diese Variante wählen, muß man sich darüber klar sein, daß dann möglicherweise Daten verloren gehen...


Übrigens
Wozu das alles?
Frauchen wollte, daß in ihrem Forum angezeigt wird, wer in den letzten 24 - 48 - der letzten Woche - online war.
So etwas ähnliches gäbe es natürlich auch als mehr oder weniger fertige Module für phpbb2, aber die sind mir immer zu undurchsichtig, und außerdem wollt' ich es ja mal wieder selber machen, und zwar in PERL.
Für solche Fälle (mußte ja jetzt kommen) hab ich ja schließlich mein Cache-Modul, das mir die Geschichte mit der Zeitmessung abnimmt, außerdem kann ich es bei Bedarf noch ausbauen.

In diesem Sinne

Bis demnächst


Artikel im Internet unter http://www.hidemail.de/blog/perl-in-php-einbinden.shtml.