Ankündigung

Einklappen
Keine Ankündigung bisher.

Kommunikation zwischen zwei Umgebungen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Kommunikation zwischen zwei Umgebungen

    Hallo zusammen,

    ich schreibe gerade an einem Konzept zur PHP Migration. Teil dieses Konzepts ist es, dass ich die PHP Anwendung in Komponenten unterteile und dann jede Komponente einzeln in die neue Umgebung übertrage. Während einige Komponenten in der alten Umgebung sind und einige in der neuen, soll die Anwendung weiter zu verwenden sein.

    Mein Problem ist, wie ich es hinbekomme, dass die Komponenten in den unterschiedlichen Umgebungen miteinander kommunizieren können.

    Bisher bin ich so weit, dass die Komponente in der einen Umgebung ein selbstgeschriebenes Gateway aufruft (in der gleichen Umgebung), welches mit header('Location: blabla'); dann ein Gateway in der anderen Umgebung aufruft und dieses Gateway dann alles in dieser Umgebung erledigt.

    Das Problem dabei ist, dass ich nun nicht mehr an die Stelle zurückkomme, wo ich das erste Gateway aufgerufen habe (wegen header('Location: blabla'). Also bräuchte ich 'ne Alternative für header('Location: blabla'); oder eine ganz andere Möglichkeit, das alles zu realisieren.


    Danke schon mal für Tipps

  • #2
    Hier noch mal meine Skripte

    Neue Umgebung:
    PHP-Code:
    <?php 
    require_once ('gatewayneu.php'); 
    $wert=Methodeneu($wert);
    Gateway neue Umgebung (gatewayneu.php):
    PHP-Code:
    <?php 
    function Methodeneu($wert

    header('Location: http://www.alteumgebung/gatewayalt.php?wert='.$wert); 
    return 
    $wert
    }
    Gateway alte Umgebung:
    PHP-Code:
    <?php 
    require_once ('alt.php'); 
    $wert=$_REQUEST['wert']; 
    $wert=Methodealt($wert);
    Alte Umgebung (alt.php):
    PHP-Code:
    <?php
    function Methodealt($wert

    .... 
    return 
    $wert
    }

    Kommentar


    • #3
      Sowas nennt sich Webservice.

      Kommentar


      • #4
        Du könntest einen weiteren Header mitsenden der dich danach wieder zurück bringt auf die ursprüngliche Seite, wobei ich davon ausgehe, dass das ganze eine Sackgasse ist.

        Kommentar


        • #5
          Was hat den der Client mit der Rückgabe einer Funktion zu tun? Wenn schon muss der Server den Request ausführen. Dieses ganze Konzept hat ein Namen und nennt sich Webservice. Dazu findet man genügend Information im Netz wie sowas (sinnvoll) in PHP implementiert werden kann.
          Natürlich kann man auch anfangen mit file_get_contents rumzupfuschen...

          Kommentar


          • #6
            Also ich habe das jetzt mal mit Webservice gemacht. Das Problem was ich jetzt habe ist das ich nicht genau weiß welche Adresse ich da rein schreiben muss.

            Die Gateway sehen jetzt so aus:

            Gateway neue Umgebung (gatewayneu.php):

            PHP-Code:
            <?php
                
            require_once ('lib/nusoap.php');

            function 
            Methodeneu($wert)
            {    
                
            $param = array( 'wert' => $wert);
                
                
            $client = new soapclient('http://www.kropp.eu/gateway2.php');

                
            $response $client->call('hello',$param);

                return 
            $response['wert'];
            }

            Gateway alte Umgebung (gateway2.php):
            PHP-Code:
            <?php
            require_once ('alt.php');
            require_once (
            'lib/nusoap.php');


            //using soap_server to create server object
            $server = new soap_server;

            //register a function that works on server
            $server->register('hello');

            // create the function
            function hello($wert)
            {
                
            $result = array('wert'=>Methodealt($wert););
                return 
            $result;
            }

            // create HTTP listener
            $server->service($HTTP_RAW_POST_DATA);

            exit();
            Die Fehlermeldung die ich bekomme sieht so aus:

            Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://www.kropp.eu/gateway2.php' : failed to load external entity "http://www.kropp.eu/gateway2.php" in C:\xampp\htdocs\testen\gateway.php:8 Stack trace: #0 C:\xampp\htdocs\testen\gateway.php(: SoapClient->SoapClient('http://www.krop...') #1 C:\xampp\htdocs\testen\testen.php(7): Methodeneu('TEST1') #2 {main} thrown in C:\xampp\htdocs\testen\gateway.php on line 8

            Kommentar


            • #7
              Wozu bindest du die nusoap-Library mit ein? Die brauchst du nicht, wenn du die in PHP eingebaute SOAP Funktionalität verwendest...

              PHP-Code:
              $client = new soapclient('http://www.kropp.eu/gateway2.php'); 
              Du musst eine WSDL angeben... wahlweise den ersten Parameter leer lassen und den 2. Parameter (array) zur Konfiguration nutzen.

              Beispiel:

              soap_server.php
              PHP-Code:
              function testfunktion($param)
              {
               return 
              "Hallo " $param "!! Es funktioniert!!!";
              }


              $server = new SoapServer
               
              null
               array( 
                
              'uri'=>"http://localhost/test-uri",
                
              'encoding'=>'UTF-8'
                
              'soap_version'=>SOAP_1_2
               

              ); 

              $server->addFunction("testfunktion");

              $server->handle(); 
              soap_client.php (diese im Browser aufrufen)
              PHP-Code:

              $soap 
              = new SoapClient(null, array('location'=>'http://localhost/soap_server.php''uri'=>'http://localhost/test-uri'));

              echo 
              $soap->testfunktion('Username'); 
              Ausgabe:
              Code:
              Hallo Username!! Es funktioniert!!!
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar


              • #8
                aha.... damit habe ich es jetzt hin bekommen.

                Vielen Dank für die Hilfe

                Kommentar

                Lädt...
                X