Wolfgang Weber: Perl -> PHP Kommunikation

Hallo Leute,

ich habe folgendes Problem und bin inzwischen am verzweifeln.
Ich habe eine Webseite mit PHP gestaltet. Alles schön und gut.
Nun sende ich aus dieser Webseite heraus Formulardaten an ein Perl-Script (dieses Script läuft auf einem anderen Server).
Das Script berechnet mir etwas und die Resultate möchte ich nun wieder in diese Webseite hineinintegrieren.

Ich versuchte schon vom Perlscript aus mit redirect die Webseite wieder aufzurufen, aber für GET sind die Rückgabedaten zu gross und POST funktioniert mit redirect scheinbar nicht.

Cookies kann ich scheinbar auch nicht benutzen da ich von 2 verschiedenen servern aus zugreifen muss. Daher denke ich fällt auch eine Lösung über sessions aus.

Hat jemand noch eine Idee oder eine Anregung in welche Richtung ich einmal weiterschauen kann?

  1. Hell-O!

    Hat jemand noch eine Idee oder eine Anregung in welche Richtung ich einmal weiterschauen kann?

    POST-Request mit PHP an das Perlscript, Auswerten der erhaltenen Daten und Aufbereitung nebst Anzeige.

    Siechfred

    --
    Ich bin strenggenommen auch nur interessierter Laie. (molily)
    Siechfreds Tagebuch || Falle Aufteilungsbescheid || RT 221 Erfurt-Altstadt i.V.
  2. Ich versuchte schon vom Perlscript aus mit redirect die Webseite wieder aufzurufen, aber für GET sind die Rückgabedaten zu gross und POST funktioniert mit redirect scheinbar nicht.

    Moment, Deine Website "ist PHP", ruft ein Perlscript auf einem anderen Server auf (so weit so gut) und das Perlscript macht was? *Brrr*
    Warum gibt das Perlscript nicht brav Daten zurück und PHP macht weiterhin seinen "Website-Job"?

    Cookies kann ich scheinbar auch nicht benutzen da ich von 2 verschiedenen servern aus zugreifen muss. Daher denke ich fällt auch eine Lösung über sessions aus.

    Du könntest irgendwo einen speziellen Session-Server einrichten, dann hättest Du serverübergreifende Sessions.   ;)

    Hat jemand noch eine Idee oder eine Anregung in welche Richtung ich einmal weiterschauen kann?

    Ich vermute ehrlich gesagt, dass Du bereits (fast) alles richtig machst.

  3. Hallo !

    Zum redirect schliess ich mich dem *Brrr* von Hamstar an. :-)

    Zum POST unter Perl :

    In der Gegenrichtung Perl-POST->URL muss man sich den  Header ziemlich en detail zusammenkleben.

    Deshalb 'mal ins Blaue geraten :

    Vielleicht mag das emfpangende Skript den Content-Type nicht so gerne ?

    Hast Du Dir mal den Content angeschaut der bei Perl angekommen ist ?

    Aber eins faellt mir noch ein - auch auf auf die Gefahr hin dass man mich dafuer steinigt :

    Per GET dem PERL eine URL auf dem PHP-Server schicken von der es sich die Daten selbst holen kann ( per GET ).
    (Also von hinten - durch die Brust - ins Auge ! )

    @all Wer jetzt lacht - so aehnlich wird ein BSTR unter DCOM uebergeben, oder ? :-)

    Gruss

    Holger

    1. Hi Leute,

      erstmal danke für die viele, rasche Antwort.

      Ich glaube ich habe mich etwas unklar ausgedrückt. Meine Webseite beinhaltet Sessions, Login-Funtion, CSS Framework usw.
      Nun habe ich eine aufwendige Berechnung die ich extern mittels Perl durchführen möchte. Naja und die Ergebnisdaten würde ich gerne in meinem Webseiten-bereich präsentieren. Daher kommt das redirekt da ich ja wieder in meinen wohlgestallteten und organisierten Bereich rein möchte.

      Das mit dem Socket hab ich ehrlichgesagt nicht verstanden. Ich müsste doch dann im Perl-bereich einen Socket aufmachen und das dann ans PHP versenden. Ist das in Perl ähnlich einfach oder aufwendiger?

      1. Hell-O!

        Nun habe ich eine aufwendige Berechnung die ich extern mittels Perl durchführen möchte. Naja und die Ergebnisdaten würde ich gerne in meinem Webseiten-bereich präsentieren.

        Warum dann nicht so, wie ich es angedeutet habe? Vom Ablauf her könnte es so ablaufen:

        • Formular zeigt auf PHP-Script
        • PHP-Script macht einen POST-Request auf Perlscript
        • Perlscript macht die Berechnungen und gibt die Daten (z.B. als XML) an PHP-Script zurück
        • PHP-Script liest die erhaltenen Daten aus und präsentiert sie zusammen mit den übrigen Inhalten

        So mache ich es bei Google-Anfragen (Auswertung des Referrers), nur dass das Perlscript in meinem Fall ein PHP-Script ist, das eine Datenbank durchsucht. Eine Alternative zu obigem Vorgehen wäre AJAX.

        Das mit dem Socket hab ich ehrlichgesagt nicht verstanden. Ich müsste doch dann im Perl-bereich einen Socket aufmachen und das dann ans PHP versenden.

        Wie das mit den Sockets in PHP funktioniert, weiß ich nicht, in Perl weiß ich zwar prinzipiell, wie's gehen könnte, verweise dich aber besser mal auf Netzwerkprogrammierung mit Sockets.

        Siechfred

        --
        Ich bin strenggenommen auch nur interessierter Laie. (molily)
        Siechfreds Tagebuch || Falle Aufteilungsbescheid || RT 221 Erfurt-Altstadt i.V.
      2. Hallo !

        Wie meinst Du das "wieder rein "?

        Mir ist im Moment unklar ob das Perl ueberhaupt (als CGI od. mod_perl) unter einem Webserverlaeuf laeuft :

        • ja

        Dann koenntest Du ( synchron ) aus dem PHP-Skrtipt
        die URL des Servers aufrufen - entwedermit Post oder mit dem GET - Verfahren  das ich beschreiben hatte.
        Das (CGI/mod_perl)-Perl nimmt oder holt sich die Daten,
        rechnet, und dann kehrt der PHP - Aufruf mit dem Ergebnis zurueck. Das wuedrde voellig synchron sozusagen in einem "logischen Thread" zwischen den Servern laufen.

        • nein

        ( Vor allem wegen dieses Begriffs )

        Socket

        Dann koenntest Du z.B. PHP XMLRPC und Perl XMLRPC::Lite nutzen. Dann startest Du auf dem Perl-Server einen Daemon und nutzt die Parameter fuer den  Aufruf im PHP Skript. ( Das sind jeweils 10 Zeilen, mehr nicht )

        => Auch dies Verfahren ist aber synchron ! <=

        Also von wo willst Du auf Deine Site "zurueck" ? ;-)

        Gruss

        Holger

      3. Das mit dem Socket hab ich ehrlichgesagt nicht verstanden. Ich müsste doch dann im Perl-bereich einen Socket aufmachen und das dann ans PHP versenden. Ist das in Perl ähnlich einfach oder aufwendiger?

        Vergiss die sockets, Du machst einfach das was Siegfred hier skizziert hat, noch mal ganz doof beschrieben: PHP macht das was es immer macht, additiv dazu tritt PHP (über entsprechende Module) selbst kurzfristig als Browser auf und konnektiert eine Webressource (eben das Perlscript, das bspw. auf einem anderen Server liegt), wartet die Ausführung desselben ab (das nennt sich "synchrone Ausführung") und wertet die Daten des Perlscripts aus und lässt diese in seinen Hauptjob, nämlich die "Webseitendarstellung" einfliessen.

        Das Perlscript darf wiederum auch ganz einfach gestrickt sein, also reine Textdaten oder von mir aus auch HTML-Daten zurückgeben (nur für den Fall, dass Du nicht eine XML-Lösung ins Auge fasst, wofür ich Verständnis hätte).