Hprose for php(一) 安装 输出helloword

郑茂材
2023-12-01

本文参考了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)直接复制到您的开发环境的目录下即可,无需任何安装步骤。(即:复制src目录下的所有文件,该目录已包含所有以上文件)

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文件,内容如下:

<?php

include("hprose/hprose.php");

function hello($name){

return "Hello".$name;

}

$server = new HproseHttpServer();

$server->addFunction("hello"); //发布函数

$server->handle();

?>
测试:访问 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文件,内容如下:

 
<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/11/30 0030
 * Time: 11:28
 */
include("src/hprose.php");
$client = new HproseHttpClient("http://localhost/hprose/server.php",false);
echo $client->hello("Hprose");
测试:访问 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错误,但是不好调试。如何调试。

 类似资料: