php的PHPRPC安装使用

“PHPRPC是一个轻型安全的,跨网际跨语言跨平台跨域,支持复杂对象传输,支持引用参数传递,支持内容输出重定向,支持分机错误处理,支持会话,面向服务的高性能远程过程调用协议”,提供了ASP,Java,JavaScript,.net,php,python,ruby,perl等主流语言的实现。

虽然soap也号称是简单对象访问协议,不过从上面一篇博客介绍中也看出,它的定义还是比较复杂了,更别提基于xml描述的wsdl文件,个人认为非常复杂难读。(对于两者的比较可以参考这篇博客介绍)

首先下载相应的语言包文件:http://phprpc.org/zh_CN/docs/ 我这里为了测试方便,下载的php版本,把压缩包解压到网站根目录。在根目录下创建两个测试文件server.php与client.php

<?php
include ("php/phprpc_server.php");
function HelloWorld() {
    return 'Hello World!';
}
$server = new PHPRPC_Server();
$server->add('HelloWorld');
$server->start();
?>
<?php
include ("php/phprpc_client.php");
$client = new PHPRPC_Client('http://127.0.0.1/server.php');
echo $client->HelloWorld();
?>
上面的案例都是phprpc官网上的例子,用浏览器访问http://127.0.0.1/client.php,如果出现500错误,可以再访问server.php试试,如果出现如下错误:
PHP Strict Standards:  Non-static method PHPRPC_Server::initSession() should not be called statically in F:\asp\php\phprpc_server.php on line 495
则修改phprpc_server.php文件里面initSession函数的类型为static即可。然后访问client.php就会看到熟悉的Hello World了,感觉比php_soap简单很多。

参数传递示例如下:

<?php
include ("php/phprpc_server.php");

$server = new PHPRPC_Server();
$server->add('sort');

$server->start();
?>
<?php
include ("php/phprpc_client.php");
$client = new PHPRPC_Client('http://127.0.0.1/server.php');
$fruits = array("lemon", "orange", "banana", "apple");
$args = array(&$fruits, SORT_STRING);
print_r($fruits);
$client->invoke('sort', $args, true);
print_r($fruits);
?>

既然是远程过程调用,不同语言不同平台和各种异构系统中都能很方便的实现互相调用,比如HelloWorld的例子,安装了asp的客户端后只需要在代码中添加如下代码,也能调用php的服务器端代码。

<%@ CodePage = 65001 %>
<script runat="server" language="JScript" type="text/javascript" src="phprpc_client.js"></script>
<script runat="server" language="VBScript">
Dim client
Set client = PHPRPC_Client.create("http://127.0.0.1/server.php")
Response.write(client.HelloWorld())
</script>

关于PHPRPC的数据表示,加密传输,回话管理等内容可以详见:http://www.phprpc.org/zh_CN/docs/

此外还有facebook贡献的thrift项目做RPC通信也很方便,项目主页

你可能感兴趣的:(php的PHPRPC安装使用)