设为首页 收藏本站
查看: 800|回复: 0

[经验分享] PHPRPC for PHP

[复制链接]

尚未签到

发表于 2015-8-24 11:52:35 | 显示全部楼层 |阅读模式
PHPRPC 是一个轻型的、安全的、跨网际的、跨语言的、跨平台的、跨环境的、跨域的、支持复杂对象传输的、支持引用参数传递的、支持内容输出重定向的、支持分级错误处理的、支持会话的、面向服务的高性能远程过程调用协议。
下载地址:http://www.phprpc.org/zh_CN/download/
该版本直接解压后就可以使用,其中
属于公共文件。不论是客户端还是服务器端都需要这些文件。
是客户端文件,如果你只需要使用客户端,那么只要有上面那些公共文件和这个文件就可以使用了,使用时,直接在你的程序中包含 phprpc_client.php 就可以,公共文件不需要单独包含。
这三个文件是服务器端需要的文件。
其中 dhparams 目录中包含的是加密传输时用来生成密钥的参数
dhparams.php 是用来读取 dhparams 目录中文件的类。
phprpc_server.php 是服务器端,如果你要使用 PHP 来发布 PHPRPC 服务,只需要包含这个文件就可以了。公共文件和 dhparams.php 都不需要单独包含。
PHP 4.3+、PHP 5、PHP 6
客户端要求开启 socket 扩展。
服务器端需要有 IIS、Apache、lighttpd 等可以运行 PHP 程序的 Web 服务器。
如果服务器端需要加密传输的能力,必须要保证 session 配置正确。
<?php   
include('php/phprpc_server.php');             //加载文件
function hello($name) {   
return'Hello ' . $name;   
}   
$server = new PHPRPC_Server();                //创建服务端
$server->add(array('hello', 'md5', 'sha1'));    //数组形式一次注册多个函数
$server->add('trim');                                      //单一注册
$server->start();                                           //开启服务
?>   
<?php   
include ("php/phprpc_client.php");                                              //加载文件
$client = new PHPRPC_Client('http://127.0.0.1/server.php');       //创建客户端 并连接服务端文件
echo$client->Hello("word");                                                         //调用方法 返回 hello word
?>   
--------------------------------------------------  ---------------------------------------------------  ------------------------------
服务端其他说明:
<?php   
include('php/phprpc_server.php');             //加载文件
function hello($name) {   
return'Hello ' . $name;   
}  
class Example1 {   
staticfunction foo() {   
return'foo';      
}  
function bar() {   
return'bar';   
}   
}   
$server = new PHPRPC_Server();                //创建服务端
$server->add('foo', 'Example1');                   //静态方法直接调用   
$server->add('bar', new Example1());         //非静态方法 需要实例化
//注册别名调用
$server->add('hello', NULL, 'hi');                 //第三参数是函数的别名   客户端通过别名来调用函数
$server->add('foo', 'Example1', 'ex1_foo');   
$server->add('bar', new Example1(), 'ex1_bar');
$server->setCharset('UTF-8');                  //设置编码
$server->setDebugMode(true);                //打印错误
$server->setEnableGZIP(true);                //启动压缩输出虽然可以让传输的数据量减少,但是它会占用更多的内存和 CPU,因此它默认是关闭的。
$server->start();                                           //开启服务
?>
--------------------------------------------------  ---------------------------------------------------  ---------------------------
客户端其他说明:
<?php   
include ("php/phprpc_client.php");   
$client = new PHPRPC_Client();   
$client->useService('http://127.0.0.1/server.php');              //远程调用地址
$client->setKeyLength(1000);                                             //密钥长度
$client->setEncryptMode(3);                                                //加密等级0-3
$client->setCharset('UTF-8');                                              //设置编码
$client->setTimeout(10);                                                     //设置超时时间
echo$client->hi('PHPRPC'), "\r\n";                                     //调用函数
echo$client->getKeyLength(), "\r\n";                                //下面是返回值
echo$client->getEncryptMode(), "\r\n";                           
echo$client->getCharset(), "\r\n";   
echo$client->getTimeout(), "\r\n";   
?>   
-------------------------------------------------- --------------------------------------------------- ----------------------
关于session  
<?php   
include('php/phprpc_server.php');   
class ExampleCounter {   
function ExampleCounter() {   
if (!isset($_SESSION['count'])) {   
$_SESSION['count'] = 0;   
}   
}   
function inc() {   
$_SESSION['count'] += 1;   
}   
functioncount() {   
return$_SESSION['count'];   
}   
}   
$server = new PHPRPC_Server();   
$server->add(array('inc', 'count'), new ExampleCounter());   
$server->start();   
?>   
<?php
include("php/phprpc_client.php");   
$client = newPHPRPC_Client();   
$client->useService('http://127.0.0.1/1.php');   
$client->setTimeout(10);   
echo $client->inc();
echo $client->count();
echo $client->inc();
echo $client->count();
?>   
每次刷新都是新建的client 服务端并不能识别.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-103471-1-1.html 上篇帖子: [PHP] 使用POP3协议收取邮件 下篇帖子: PHP中的错误处理、异常处理机制
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表