转:Hprose for php(一)——快速入门

文章来自于:http://blog.csdn.net/half1/article/details/21095665

本文参考了Hprose官方的用户手册,Hprose官网:http://www.hprose.com/

使用Hprose制作一个简单的分布式应用程序只需要几分钟的时间。本文将用一个简单的实例来带您快速浏览使用Hprose for PHP进行分布式程序开发的全过程。

一、安装Hprose for PHP

 

安装条件

1)PHP 5.0或更高版本

2)Apache、IIS、lighttpd、nginx或其它任何一款可以运行php的web服务器。
3)Hprose for PHP支持SAE云计算平台,在SAE云计算平台上不需要单独的服务器。
 

安装方法

1)直接将Hprose for PHP的所有文件(hproseCommon.php,hproseIO.php,hproseHttpServer.php和hproseHttpClient.php)直接复制到您的开发环境的目录下即可,无需任何安装步骤。
2)Hprose for PHP有三个版本,分别是面向普通的PHP配置,带有curl扩展的PHP配置和SAE平台的。这三个版本目前只有hproseHttpClient.php是有区别的,但是用法完全相同。
 

二、创建Hprose的Hello服务器

 
      创建PHP的Hprose的服务器非常简单。下面我们以Linux环境为例来讲解。假设在Linux下已经配置好了Web服务器(apache、lighttpd或其它任何http服务器),并且可以执行PHP程序,发布路径为/var/www。然后我们在发布目录下建立一个hprose目录,把Hprose for PHP的几个文件放到该目录下。然后在发布目录下创建一个helloserver.php文件,内容如下:
  1. <?php
  2. include("hprose/hproseHttpServer.php");
  3. function hello($name){
  4. return "Hello".$name;
  5. }
  6. $server = new HproseHttpServer();
  7. $server->addFunction("hello"); //发布函数
  8. $server->handle();
  9. ?>

测试:访问http://localhost/helloserver.php,如果出现“Fa1{s5"hello"}z”就表示服务发布成功。

猜测这个序列化结果的含义:
F表示function;a表示List/Array;1表示List/Array的长度;{和}是分隔符,便于解析;s表示String;4表示后接string的长度;z表示end。

三、创建Hprose的Hello客户端

 
PHP的Hprose客户端创建更加容易,同样在发布目录下创建helloclient.php文件,内容如下:
  1. <?php
  2. include("hprose/hproseHttpClient.php");
  3. $client = new HproseHttpClient("http://localhost/helloserver.php");
  4. echo $client->Hello("Hprose");
  5. ?>

测试:访问http://localhost/helloclient.php,或者在命令行上输入php helloclient.php,如果出现“Hello Hprose”就表示客户端创建成功。

四、个人总结

       Hprose的应用就三件事,第一,复制Hprose文件进项目;第二,写Hprose服务端;第三,写Hprose客户端。
Hprose服务端要做的事就两件。一、new一个HproseHttpServer对象;二、用这个对象发布服务,包括函数、方法、对象甚至类。
Hprose客户端要做的事就两件。一、new一个HproseHttpClient对象;二、用这个对象调用服务端发布的各种服务。
注意:
1、server和client之间用序列化结果交互,在server中使用echo、var_dump等函数会扰乱序列化结果,故不能使用,在client中可以使用。
疑问:
1、当Hprose服务端或客户端有错时,服务器会报500错误,但是不好调试。如何调试。
上一篇:Redis 数据序列化方法 serialize, msgpack, json, hprose 比较


下一篇:.Net 之 RPC 框架之Hprose(远程调用对象)