/blog/perl


substr() in Perl
[104424 mal gelesen]
foreach in Perl
[96736 mal gelesen]
Arrays in Perl - Besonderheiten
[86032 mal gelesen]
open() - Dateien öffnen in Perl
[83300 mal gelesen]
chomp() in Perl
[71147 mal gelesen]
grep - Listen durchsuchen in Perl
[66289 mal gelesen]
push in Perl
[61322 mal gelesen]
split() in Perl - Zeichenketten teilen
[59218 mal gelesen]
sleep in Perl - Das aktuelle Script warten lassen
[44424 mal gelesen]
print in Perl
[40474 mal gelesen]


Arrays
Dateien
HTPC
Hashes
Leistungsoptimiert
PHP
Perl
RegEx
Schleifen
Script
Skalare
Sonstiges
System
Webserver
Zur Startseite


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




Kommentare zum Beitrag "Perl in PHP einbinden"

Kommentar von Was ist mit
passthru("perl dingens.pl");

?

Kommentar von fatal error
ramschaufel.pl

#!/usr/bin/perl
print qq~Content-Type: text/plain\n\nLOAD \"RAMSCHAUFEL\",8,1\nRUN
while (2 ne 3)
{
$list[$i] .= $i . $list[$i+1];
print qq~$i\n~; $i++;
}
1;


index.php

<?php
$applikation = "/lokaler/pfad/zu/meiner/ramschaufel.pl";
$output = shell_exec('$applikation');
echo "$output";
?>


Mitunter recht amüsant, wie Server und Client da reagieren.

Mal im Ernst: Dies ist eine Spaßanwendung. Wohl aber läßt sich diese Methode auch sinnvoll einsetzen. Etwa zum bewuseln von den allseits unbeliebten MySQL Datenbanken. Dort ist PHP eine einzige Katastrophe und über solchen Umweg kann man bessere Performance mit mögigem Sicherheitspotential anzetteln.

happy stricking !



Thema: Perl PHP

Der Beitrag "Perl in PHP einbinden" wurde 6892 mal gelesen.

Es wurde 5 x über diesen Beitrag abgestimmt.
Die durchschnittliche Beurteilung liegt bei
2 (1 = sehr gut - 6 = grottenschlecht).

Kommentar schreiben  Druckansicht  Seitenanfang 
Beurteilen 






 Zufällige Beiträge im /blog/perl

Skalare in Perl

time - Zeit in Sekunden in Perl

Perls map, grep und sort - ein alter Beitrag aus dem Internet

rename - Dateien und Verzeichnis umbenennen

Doppelte Elemente aus Array entfernen - Und die Reihenfolge beibehalten!

Shift in Perl

The until-command in Perl

Zeitkontrolle eines Scriptes - times() in Perl

pop() in Perl

Umgebungsvariablen in Perl



0.0302870273590088 sec. to build



...Blogsoftware in pure Perl - Powered by a lot of Coffee...


SSD-Festplatte - Wassn das???
Die Transliteration - Nur ein Zeichen in einem Skalar ersetzen
Select - Case in Perl
Windows 7 XP Mode – Wo finde ich den XP-Modus unter Windows 7?
Mac-Adresse beim Apple Macintosh herausfinden
SGN-Funktion für Perl
truncate - Dateigröße verändern in Perl
Eigene IP herausfinden mit Perl
Epoche live in Datum umwandeln
Firefox 3 - Exe-Files downloaden


Von: perluser
Kommentar:
Bei
foreach (@a){$_=~ s/\n//;}
Zum Beitrag


Von: Susi
Kommentar:
vielen Dank, hat mir sehr geholfen :-)
Zum Beitrag


Von: TBu
Kommentar:
Hi,
super Beispiel, DANKE!
Zum Beitrag


Von: Thomas Ha
Kommentar:
Danke für den schönen Blog, er dient mir öfters mal als Nachschlagewerk!

Zum Beitrag


Von: Kasi
Kommentar:
auch im november 2011 noch super hilfreich,danke dir gruß
Zum Beitrag



Gesamtverzeichnis
Februar 2010
Dezember 2009
Oktober 2009
Januar 2009
Dezember 2008
November 2008
September 2008
August 2008
Juli 2008
Juni 2008
Mai 2008
April 2008
Januar 2008
Dezember 2007
November 2007
Oktober 2007
September 2007
August 2007
Juni 2007
Mai 2007
April 2007
März 2007
Februar 2007
Januar 2007
Dezember 2006


Mister Wong

RSS-Feed

Heute ist der
4.2.2012

Es ist
15:56:35 Uhr

Ihre IP:
38.107.179.237

Blog-Einträge: 186

Die letzten 24 Stunden im Überblick


Gelesene Beiträge insgesamt:
2961729


Webseiten vergleichen
Kalender mit Feiertagen - 2028
Links finden und testen
Menschliche Datumsangaben
IP zu Domain herausfinden
Time live in Datum umwandeln
Perl für Windows



Mo Di Mi Do Fr Sa So
12345
6789101112
13141516171819
20212223242526
272829

Impressum