gepard / gepard-php
gepard的PHP客户端:适用于分布式应用的通用通信,JavaScript、Java、Python和PHP的事件、信号量和消息
dev-master
2017-08-09 21:35 UTC
Requires
- clue/socket-raw: ^1.2
- hampel/json: ^2.3
This package is not auto-updated.
Last update: 2024-09-14 20:09:34 UTC
README
适用于分布式应用/微服务/事件、信号量、锁和消息的通用通信和同步层,支持JavaScript、Java、Python和PHP
概述
此 PHP 模块实现了用于通用分布式应用的 GEPARD 中间件的一个简单客户端。
要使用此 PHP 客户端,您必须已安装 GEPARD 中间件。这可以通过执行以下命令来完成:
npm install gepard
执行此命令的前提是已安装 node 和 npm。有关更多信息,请参阅 npm上的gepard 和 GitHub上的gessinger-hj/gepard。
如果您对Python客户端感兴趣,请参阅 PyPI上的gepard-python 和 GitHub上的gepard-python
安装
如果您还没有 composer.json 文件,请创建该文件并添加以下内容
{ "require": { "gepard/gepard-php": ">=1.0" }, "minimum-stability": "dev" }
如果此 composer.json 文件已经存在于您的项目目录中,请添加上述内容。完成后,执行以下命令:
composer install
用例
更新数据库中的客户记录
假设有一个包含客户基础数据的数据库,例如名称、ID、启用状态等...
例如,可以通过 laravel/eloquent 访问数据库。以下代码片段展示了如何进行更新操作:
$customer_Id = 1 ; $customer = App\Customer::find($customer_id); $customer->name = 'New Customer Name'; $customer->save();
通过发送事件来通知感兴趣的第三方
Client::getInstance()->emit('CUSTOMER_CHANGED', ['CUSTOMER_ID' => $customer_id]);
感兴趣的第三方,例如:
-
一个发送电子邮件的Java程序。
Client.getInstance().on ( new String[] { "CUSTOMER_CHANGED" }, (e) -> { Integer customer_id = e.getValue ( "CUSTOMER_ID" ) ; *select customer from database with customer_id* *use any mail-api to send mail* } ) ;
-
一个发送电子邮件的JavaScript程序。
gepard.getClient().on ( 'CUSTOMER_CHANGED', (e) => { let customer_id = e.getValue ( 'CUSTOMER_ID' ) ; *select customer from database with customer_id* *use any mail-api to send mail* } ) ;
-
一个发送电子邮件的Python程序。
def on_CUSTOMER_CHANGED ( event ): customer_id = event.getValue ( 'CUSTOMER_ID' ) ; *select customer from database with customer_id* *use any mail-api to send mail* gepard.Client.getInstance().on ( 'CUSTOMER_CHANGED', on_CUSTOMER_CHANGED ) ;
-
一个单页Web应用或React-native应用。
gepard.getWebClient().on ( 'CUSTOMER_CHANGED', (e) => { let customer_id = e.getValue ( 'CUSTOMER_ID' ) ; if ( customer-data are displayed in any part of the page ) { *select customer from database with customer_id via a REST call* *update appropriate display* } } ) ;