baseportal Perl & PHP


  1. Perl und PHP mit Tags einbinden
  2. <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...

    [ Fehler: open_basedir restriction in effect - Please contact support@baseportal.de ]

  3. Perl von PHP aus aufrufen
  4. <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:

    [ Fehler: open_basedir restriction in effect - Please contact support@baseportal.de ]
    Wert von x:

  5. Perl von PHP aus aufrufen, Datenbank abfragen und Wert zurückgeben
  6. <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:

    [ Fehler: open_basedir restriction in effect - Please contact support@baseportal.de ]

  7. Perl von PHP aus aufrufen, Datenbank abfragen und in Perl darauf zugreifen
  8. <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:

    [ Fehler: open_basedir restriction in effect - Please contact support@baseportal.de ]

  9. PHP von Perl aufrufen und Wert zurückgeben
  10. <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:

    [ Fehler: open_basedir restriction in effect - Please contact support@baseportal.de ]
    PHP-Version:

  11. get / get_next in PHP
  12. <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:

    [ Fehler: open_basedir restriction in effect - Please contact support@baseportal.de ]

  13. put / mod / del in PHP
  14. <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:

    [ Fehler: open_basedir restriction in effect - Please contact support@baseportal.de ]

  15. do_all in PHP
  16. <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:

    [ Fehler: open_basedir restriction in effect - Please contact support@baseportal.de ]

  17. Geschwindigkeit


  18. Das Ganze geschieht natürlich schön schnell, wie von baseportal gewohnt... ;-)

    Laufzeit dieser Seite: 0.02

    Die obigen Ausgaben sind kein statisches HTML, sondern werden alle tatsächlich ausgeführt. 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.