hprose for php

1.客戶端和服務器簡單DEMO

經過工廠方法 create 建立客戶端

$client = \Hprose\Client::create($uriList = null[, $async = true]);

create 方法與構造器函數的參數同樣,返回結果也同樣。可是第一個參數 $uriList 不能被省略。php

使用 create 方法更加方便,所以,除非在建立客戶端的時候,不想指定服務地址,不然,應該優先考慮使用 create 方法來建立客戶端。html

\Hprose\Client::create 支持建立 Hprose 核心庫上的客戶端,Hprose\Swoole\Client::create 支持建立 swoole 的客戶端。例如:git

建立一個同步的 HTTP 客戶端github

$client = \Hprose\Client::create('http://hprose.com/example/', false);

建立 HTTP 服務器

use Hprose\Http\Server;  function hello($name) {  return "Hello $name!"; }  $server = new Server(); $server->addFunction('hello'); $server->start();
 

建立一個同步的 TCP 客戶端數組

$client = \Hprose\Client::create('tcp://127.0.0.1:1314', false);

建立 TCP 服務器

use Hprose\Socket\Server;  function hello($name) {  return "Hello $name!"; } $server = new Server("tcp://0.0.0.0:1314"); $server->addFunction('hello'); $server->start();
 

建立一個異步的 Unix Socket 客戶端promise

$client = \Hprose\Client::create('unix:/tmp/my.sock');

建立 UNIX Socket 服務器

use Hprose\Socket\Server;  function hello($name) {  return "Hello $name!"; }  $server = new Server("unix:/tmp/my.sock"); $server->addFunction('hello'); $server->start();
 

建立一個異步的 WebSocket 客戶端服務器

$client = \Hprose\Swoole\Client::create('ws://127.0.0.1:8080/');

建立 Web Socket 服務器

use Hprose\Swoole\Server;  function hello($name) {  return "Hello $name!"; } $server = new Server("ws://0.0.0.0:8088"); $server->addFunction('hello'); $server->start();

2.事件

onBeforeInvoke 事件

該事件在調用執行前觸發,該事件的處理函數形式爲:swoole

function($name, &$args, $byref, \stdClass $context) { ... }

參數 $name 是服務函數/方法名。 參數 $args 是調用的參數數組,能夠聲明爲引用參數。 參數 $byref 表示是不是引用參數傳遞。 參數 $context 是該調用的上下文參數。網絡

若是在該事件中拋出異常、返回錯誤對象、或者返回一個失敗(rejected)狀態的 promise 對象。則再也不執行服務函數/方法。異步

onAfterInvoke 事件

該事件在調用執行後觸發,該事件的處理函數形式爲:

function($name, &$args, $byref, &$result, \stdClass $context) { ... }

參數 $name 是服務函數/方法名。 參數 $args 是調用的參數數組,能夠聲明爲引用參數。 參數 $byref 表示是不是引用參數傳遞。 參數 $result 是調用執行的結果,能夠聲明爲引用參數。 參數 $context 是該調用的上下文參數。

若是在該事件中拋出異常、返回錯誤對象、或者返回一個失敗(rejected)狀態的 promise 對象。則再也不返回結果 $result,而是將錯誤信息返回給客戶端。

onSendError 事件

該事件在服務端發生錯誤時觸發,該事件的處理函數形式爲:

function(&$error, \stdClass $context) { ... }

若是在該事件中拋出異常、返回錯誤對象。則該錯誤會替代原來的錯誤信息返回給客戶端。

$error 參數能夠聲明爲引用參數,在事件中能夠對 $error 進行修改。

當服務器與客戶端之間發生網絡中斷性的錯誤時,仍然會觸發該事件,可是不會有錯誤信息發送給客戶端。

onSendHeader 事件

該事件在服務器發送 HTTP 頭時觸發,該事件的處理函數形式爲:

function(\stdClass $context) { ... }

若是在該事件中拋出異常,則再也不執行後序操做,直接返回異常信息給客戶端。

onAccept 事件

該事件在 Socket 或 WebSocket 服務器接受客戶端鏈接時觸發,該事件的處理函數形式爲:

function(\stdClass $context) { ... }

若是在該事件中拋出異常,則會斷開跟該客戶端的鏈接。

onClose 事件

該事件在 Socket 或 WebSocket 服務器跟客戶端之間的鏈接關閉時觸發,該事件的處理函數形式爲:

function(\stdClass $context) { ... }

該事件中拋出異常不會對服務器和客戶端有任何影響。

onError 事件

該事件僅被 Hprose\Socket\Server 所支持,其它服務器不支持,該事件在服務器與客戶端發生通信錯誤,沒法將錯誤發送給客戶端時觸發。該事件的處理函數形式爲:

function($error, \stdClass $context) { ... }

該事件中拋出異常不會對服務器和客戶端有任何影響。

官方使用手冊地址:https://github.com/hprose/hprose-php/wiki

相關文章
相關標籤/搜索