◈ php compile시 --with-xmlrpc 옵션추가로
xmlrpc_server_call_method, xmlrpc_server_create, xmlrpc_server_register_method 등의 함수가 사용가능해야한다.
이 옵션 때문에 특별한 클래스 추가 없이 간단하게 서버 클라이언트를 만들수 있다.
[server]
<?
// method
function uptime_func($method_name, $params, $app_data)
{
return `uptime`; // shell 명령어 uptime의 실행결과 리턴
}
function greeting_func($method_name, $params, $app_data)
{
$name = $params[0];
return "Hello, $name, How are you today?";
}
//--with-xmlrpc 옵션으로 php를 컴파일해야만 아래 함수가 활성
$xmlrpc_server = xmlrpc_server_create();
//함수를 등록
xmlrpc_server_register_method($xmlrpc_server, "greeting", "greeting_func");
xmlrpc_server_register_method($xmlrpc_server, "uptime", "uptime_func");
$request_xml = $HTTP_ROW_POST_DATA;
$response = xmlrpc_server_call_method($xmlrpc_server, $request_xml, '');
print $response;
xmlrpc_server_destroy($xmlrpc_server);
?>
[client]
//php client --with-xmlrpc 옵션 활성화된 어떤 외부 서버에서도 가능
<?
include("utils.php");
$host = "도메인명";
$url = "/path/server.php";
$result = xu_rpc_http_concise(
array(
'method' => "uptime",
'host' => $host,
'uri' => $uri,
'port' => 80
)
);
print $host . "시스템 현황(UPTIME) : " $result;
?>
client에서 server로 uptime이라는 메소드를 날리면 server.php에서 uptime_func함수로 결과값을 리턴한다.
위에서 utiles.php는 xu_rpc_http_concise함수를 불러쓰기 위해서 삽입한다.
아직 함수인자로 한글을 넘길경우 어떤 한글은 되고 어떤 경우는 제대로 encode, decode가 되지 않는다.
한글로된 인수에 공백 문자가 있으면 아직 xml parser가 euc-kr을 지원하지 않기 때문에 깨지게 된다. 다만, 공백 문자가 없고, 한글로만 이루어저있다면 3byte씩 끊어서 파싱해도 깨지지 않고,
url_encode()하거나 base64를 이용해서 사용하면 상관이 없다.
XML RPC 예 (PHP) (0) | 2011.11.17 |
---|---|
XML RPC 예 (PHP) (0) | 2011.11.17 |
XML RPC 란 ? (0) | 2011.11.17 |
XML RPC 관련 Site (0) | 2011.11.17 |
XML-RPC HOWTO (0) | 2011.11.17 |