hprose/hprose-php

它是一个现代、轻量级、跨语言、跨平台的面向对象、高性能、远程动态通信中间件。它不仅易于使用,而且功能强大。您只需花一点时间学习,然后就可以用它轻松构建跨语言、跨平台分布式应用。

dev-master 2015-10-23 03:41 UTC

This package is not auto-updated.

Last update: 2024-09-20 02:06:18 UTC


README

Join the chat at https://gitter.im/hprose/hprose-php Packagist Packagist Download License

介绍

Hprose 是一个高性能远程对象服务引擎。

它是一个现代、轻量级、跨语言、跨平台的面向对象、高性能、远程动态通信中间件。它不仅易于使用,而且功能强大。您只需花一点时间学习,然后就可以用它轻松构建跨语言、跨平台分布式应用系统。

Hprose 支持许多编程语言,例如

  • AAuto Quicker
  • ActionScript
  • ASP
  • C++
  • Dart
  • Delphi/Free Pascal
  • dotNET(C#, Visual Basic...)
  • Golang
  • Java
  • JavaScript
  • Node.js
  • Objective-C
  • Perl
  • PHP
  • Python
  • Ruby
  • ...

通过 Hprose,您可以方便、高效地在这些编程语言之间进行通信。

本项目是 Hprose 在 PHP 上的实现。

安装

下载源码

下载链接

使用 composer 安装

{
    "require": {
        "hprose/hprose": "dev-master"
    }
}

使用方法

服务器

Hprose for PHP 非常易于使用。您可以创建一个 hprose 服务器,如下所示

<?php
    require_once('Hprose.php');

    function hello($name) {
        return 'Hello ' . $name;
    }

    $server = new HproseHttpServer();
    $server->addFunction('hello');
    $server->start();

您也可以使用 HproseSwooleServer 来创建一个独立的 hprose 服务器

server.php

<?php
    require_once("Hprose.php");

    function hello($name) {
        return 'Hello ' . $name;
    }

    $server = new HproseSwooleServer('http://0.0.0.0:8080/');
    $server->addFunction('hello');
    $server->start();

然后使用命令行启动它

php server.php

要使用 HproseSwooleServer,您需要先安装 swoole。支持的最低版本为 swoole 1.7.16。

HproseSwooleServer 不仅支持创建 http 服务器,还支持创建 tcp、unix 和 websocket 服务器。例如

tcp_server.php

<?php
    require_once("Hprose.php");

    function hello($name) {
        return 'Hello ' . $name;
    }

    $server = new HproseSwooleServer('tcp://0.0.0.0:1234');
    $server->addFunction('hello');
    $server->start();

unix_server.php

<?php
    require_once("Hprose.php");

    function hello($name) {
        return 'Hello ' . $name;
    }

    $server = new HproseSwooleServer('unix:/tmp/my.sock');
    $server->addFunction('hello');
    $server->start();

websocket_server.php

<?php
    require_once("Hprose.php");

    function hello($name) {
        return 'Hello ' . $name;
    }

    $server = new HproseSwooleServer('ws://0.0.0.0:8000/');
    $server->addFunction('hello');
    $server->start();

websocket 服务器也是一个 http 服务器。

客户端

然后您可以创建一个 hprose 客户端来调用它,如下所示

<?php
    require_once("Hprose.php");
    $client = new HproseHttpClient('http://127.0.0.1/server.php');
    echo $client->hello('World');

Hprose 还提供了 HproseSwooleClient,它支持 http、tcp 和 unix。例如

<?php
    require_once("Hprose.php");
    $client = new HproseSwooleClient('tcp://0.0.0.0:1234');
    echo $client->hello('World');
?>

它还支持异步并发调用。例如

<?php
    require_once("Hprose.php");
    $client = new HproseSwooleClient('tcp://0.0.0.0:1234');
    $client->hello('World', function() {
        echo "ok\r\n";
    });
    $client->hello('World 1', function($result) {
        echo $result . "\r\n";
    });
    $client->hello('World 2', function($result, $args) {
        echo $result . "\r\n";
    });
    $client->hello('World 3', function($result, $args, $error) {
        echo $result . "\r\n";
    });
?>

异步并发调用的回调函数支持 0 - 3 个参数

异常处理

如果服务器发生错误,或者您的服务函数/方法抛出异常,它将被发送到客户端,客户端将抛出异常。您可以使用 try 语句来捕获它。

异步调用不会抛出异常。异常对象将被传递给回调函数作为第三个参数。