Bitte beachten: Diese Funktion steht nur bei Mietpaketen ab der pro-Version zur Verfügung.
baseportal Perl & PHP
- Perl und PHP mit Tags einbinden
<perl>
out "hier ist Perl...<br>";
</perl>
<php>
out("hier ist PHP...");
</php>
PHP wird genauso wie Perl mit entsprechenden Tags eingebunden. "out" steht auch in PHP zur Verfügung, es müssen allerdings immer Klammern um die Ausgabe stehen.
Ausgabe:
hier ist Perl...
hier ist PHP...
- Perl von PHP aus aufrufen
<php>
perl('$x=5;');
</php>
Wert von x: $x
Perl wird von PHP aus aufgerufen und die Variable $x gesetzt - diese kann nun ausserhalb von PHP abgerufen werden.
Ausgabe:
Wert von x: 5
- Perl von PHP aus aufrufen, Datenbank abfragen und Wert zurückgeben
<php>
$x=perl('get "range=0,1", "php_test"; return $Name');
out($x);
</php>
Perl wird von PHP aus aufgerufen, der erste Eintrag der Datenbank "test" abgefragt und das Feld "Name" zurückgegeben. Zurück in PHP wird der Rückgabewert ausgegeben.
Ausgabe:
Hans
- Perl von PHP aus aufrufen, Datenbank abfragen und in Perl darauf zugreifen
<php>
perl('get "Id==*", "php_test"');
</php>
<perl>
while(get_next "php_test")
{
out "$Name - $Text<br>";
}
</perl>
Perl wird von PHP aus aufgerufen und die komplette Datenbank "test" ausgelesen. Da dies alles in Perl passiert, kann sie, zurück in Perl, dann ausgegeben werden.
Ausgabe:
Hans - Und sein Text...
Stefan - Ja, so gehts... ;-)
Andrea - Genau so läufts!
- PHP von Perl aufrufen und Wert zurückgeben
<perl>
$x=php 'return phpversion();';
out "PHP-Version: $x";
</perl>
Von Perl aus wird PHP aufgerufen und die Versionsnummer von PHP zurückgegeben. In Perl wird sie dann ausgegeben.
Ausgabe:
PHP-Version: 4.2.3
- get / get_next in PHP
<php>
get("Name>a", "php_test");
while(get_next("php_test"))
{
out("$Name - $Text<br>");
}
</php>
Genauso wie in baseportal gewohnt, werden auch in PHP Datenbanken abgefragt. Hier werden alle Einträge von "test" mit "Name" > "b" geholt und mit "get_next" durchlaufen. Der obige Code funktioniert sowohl in Perl, als auch in PHP.
Ausgabe:
Hans - Und sein Text...
Stefan - Ja, so gehts... ;-)
- put / mod / del in PHP
<php>
put(array("Name", "Josef", "Text", "und Text..."), "php_test");
get("Name==Josef", "php_test"); out("Text: $Text<br>");
mod("Name==Josef", array("Text", "was anderes ;-)"), "php_test");
get("Name==Josef", "php_test"); out("Text: $Text<br>");
del("Name==Josef", "php_test");
</php>
In PHP muss zur Übergabe einer Liste array davor geschrieben werden. Ansonsten funktioniert alles wie in Perl.
Ausgabe:
Text: und Text...
Text: was anderes ;-)
- do_all in PHP
<perl>$_get{cmd}="";</perl>
<php>
do_all("db=php_test");
</php>
Natürlich gibt es auch das do_all in PHP (Die Links sind deaktiviert, damit nicht jeder die Datenbank ändern kann).
Ausgabe:
- Geschwindigkeit
Das Ganze geschieht natürlich schön schnell, wie von baseportal gewohnt... ;-)
Hier wird diese Seite in Echtzeit ausgegeben:
http://de2.netpure.de/cgi-bin/baseportal.pl?htx=/baseportal/php_demo
Ganz unten steht die Laufzeit.
Allerdings benötigt das Umschalten zwischen Perl und PHP und das Übertragen der Werte (z.B. bei Datenbank-Abfragen) auch Zeit, so dass man es soweit möglich reduzieren sollte. Diese Seite komplett in Perl gelöst benötigt z.B. nur die Hälfte der Zeit.