2011-09-18 3 views
6

저는 PHP에 익숙하지 않습니다. 두 웹 서버간에 통신하는 방법을 알고 싶습니다. 정리를 위해 (첫 번째 서버에서) 원격 서버에서 함수를 (쿼리) 실행하십시오. 그 결과를 1 차 서버로 반환합니다. PHP : 원격 함수 호출 및 결과 반환?

실제로 테마가 될 것입니다 :
Web Server (1) ----------------> Web Server (2) ---------------> Database Server
Web Server (1) < ---------------- Web Server (2) <은 --------------- Database Server

Query Function()Web Server (2)에 위치합니다. 그럼 Web Server (1)에서 원격으로 query function()을 실행해야합니다.

무엇입니까? 그리고 그것은 가능한가?

+0

[다음 질문] (http://stackoverflow.com/search?q=php+rpc)을 보셨습니까? –

+0

RPC? 이 사건이 RPC에 관한 건가요? –

+1

RPC는 * Remote Procedure Call *을 나타내며 원하는 것으로 보입니다. 그것은 일반적인 프로토콜 (또는 개념)입니다. 변형은 RMI (Java), XML-RPC, JSON-RPC입니다. 선택해야 할 것이 많습니다. 너는 너의 자신을 창조 할조차 수 있었다. 그러나 이것이 이것이 귀하의 상황에서 가장 좋은 방법이라는 것을 의미하지는 않습니다. [REST가 더 좋을 수 있습니다] (http://stackoverflow.com/questions/1098473/rest-vs-rpc). –

답변

11

예.

내가 생각할 수있는 좋은 방법은 URL을 통해 두 번째 서버에 요청을 보내는 것입니다. GET (또는 POST) 매개 변수에서 호출 할 메소드와 시간에 따라 변경되는 일종의 해시 (보안 용)를 지정하십시오. 타사가 두 번째 서버에서 임의로 기능을 실행할 수 없도록하는 해시가 있습니다.

function get_url($request_url) { 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $request_url); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $response = curl_exec($ch); 
    curl_close($ch); 

    return $response; 
} 

이것은 GET 요청을 보냅니다 :

요청을 보내려면 컬을 사용할 수 있습니다. 그런 다음 사용할 수 있습니다

$request_url = 'http://second-server-address/listening_page.php?function=somefunction&securityhash=HASH'; 
$response = get_url($request_url); 

을 두 번째 서버에서 GET 요청을 확인하고 요청의 무결성을 확인하는 (즉, 해시 (어떤 파일 이름은 물론, 같은 사용) listening_page.php을 설정, 올바른 & 유효한 매개 변수).

+0

와아! 이것은 간단하게 할 수 있습니까? 그래서 어떤 함수()를 직접 호출 할 수 있고 동일한 로컬 함수 에서처럼 반환을 얻을 수 있습니다.? –

+0

예. 호출 할 함수를 '노출'해야합니다. (즉, 서버 2가 GET 요청을 받으면 요청 된 기능을 실행 한 다음 서버 1에 응답을 전달하므로 서버 1은 원격 기능을 직접 호출하지는 않지만 비슷한 효과가 있음). – Alex

+0

테스트를 거쳤으며 대화 상대도 작동합니다. D 간단합니다. 이것들이 올바른 솔루션입니까? 제 말은, 다른 사람들은 REST API, SOAP 등을 사용하고 있다고 말하고 있습니다. 이유는 무엇입니까? –

0

API를 사용하면 그렇게 할 수 있습니다. 필요에 따라 변수를 사용하고 해당 변수를 사용하여 서버와 통신하는 두 번째 서버에 페이지를 만듭니다. 해당 페이지의 표준 응답은 JSON 또는 XML이어야합니다. 그 파일을 요청하고 두 번째 서버에서 응답을 받으면 서버 1에서 읽습니다. 개인 파일이 있는지 확인의 경우

* 참고하여 파일을 액세스하지 못하도록하는 인증 방법을 사용

+0

그래서 REST API에 대해 이야기하고 있습니까? –

+0

그래도 사용자에 따라 다르지만 REST API는 좋지만 그가 선호하는 경우 일반 텍스트를 회신으로 사용할 수 있습니다. – ahoura

+0

대화를 방해해서 죄송합니다. 하지만 PHP를 처음 접했을 때 PHP에서 JSON 또는 XML 결과를 직접받을 수 있습니까? JSON 또는 AJAX 결과가 자바 스크립트로 돌아가 HTML 요소를 통해 인쇄되고 있음을 의미합니다. (내가 아는 한 그것에 대해서는 거의 알지 못합니다.) –

0

당신이하고자하는 것은 분명히 가능합니다. 당신은 당신이

http://www.netmagazine.com/tutorials/make-your-own-soap-api

일반적으로 사용됩니다 SOAP과 REST API를 읽어 제안 서버 2.

에 요청하는 서버 하나 위해서는 API의 일종을 설정해야합니다 서버 1에서 서버 2에 연락하려면 CURL과 같은 것입니다.

Google curl을 사용하면 빨리 아이디어를 얻을 수 있습니다.

완벽한 솔루션을 제공하기가 쉽지 않으므로 올바른 방향으로 전환하는 것이 도움이되기를 바랍니다.

+0

SOAP 및 REST API를 사용하는 것에 대해 제안 해 주셔서 감사합니다. 그래서 당신은 그의 솔루션과 SOAP/REST API가 어떻게 다른지 설명해 주시겠습니까? 감사합니다 :) –

+0

위의 제안대로 http get을 사용하는 것은 완벽하게 좋은 해결책이지만 API를 빌드하는 것은 궁극적으로 실패 할 것입니다. 더 나은 기능성, 보안 성 등을 제공합니다. 결과를 쿼리하는 경우 빠르고 간단하게 얻을 수 있습니다. 예를 들어 사용자를 인증하고 DB 등에 삽입 할 데이터를 게시하려면 공개적으로 열리는 것이 이상적이지는 않습니다. – arkleyjoe