laocc/rpc

There is no license information available for the latest version (1.0.13) of this package.

PHP RPC Framework by ESP

Maintainers

Details

github.com/laocc/rpc

Source

Issues

Installs: 37

Dependents: 0

Suggesters: 0

Security: 0

Stars: 1

Watchers: 1

Forks: 1

Open Issues: 0

pkg:composer/laocc/rpc

1.0.13 2025-10-23 15:23 UTC

This package is auto-updated.

Last update: 2025-10-23 15:24:41 UTC


README

基于esp,用于快速搭建RPC业务,自动进行身份认定。

注意:若客户端和服务端不是同一台服务器,则要保证两服务器时间相差不得大于5秒以上。

# 查询服务器当前时间
date '+%F %T.%9N'
date '+%F %T.%0N'

ssh root@127.0.0.1 "date '+%F %T.%3N'"

定义几个常量

define('_RpcToken', '_RpcToken');
# Token,客户端服务端必须一致,不指定则就用默认值`_RpcToken`
# 若=`not_check`则不检查签名,在多服务器、且业务量比较大的时候,无法做到同时更新所有服务器,则可以采用此方式过渡;

define('_RpcPort', 44380);
# 端口,若不指定则默认44380,需要在nginx中绑定此端口

define('_RpcHost', '.esp');
# 在nginx中绑定的主机名根域,不指定则就用默认值`.esp`

define('_RpcKey', 'myApp');
# 客户端的识别码,建议在每个主机中单独定义,在服务端用`getenv('HTTP_KEY')`读取
# 此值不指定则用`_UNIQUE_KEY`

Nginx:

server    {
    listen 44380;
    server_name account.esp;
    index index.php;
    root /home/account/public/rpc;
    include /home/nginx/conf/php.conf;
    access_log off;
}

控制器

在所有业务端创建根控制器:注意必须引自use laocc\rpc\Controller;

<?php

namespace application\rpc\controllers;

use laocc\rpc\Controller;

class _Base extends Controller
{
    public function _main()
    {
    
    }
}

其他控制器引自此控制器即可,

调用:

    # 此方法在exp的Controller中已存在,可直接调用
    protected function rpc(string $uri, array $data = [])
    {
        $url = explode(':', $uri);
        $rpc = new Rpc($url[0]);
        $check = $rpc->post($url[1], $data);
        if (is_string($check)) return $check;
        return $check['data'];
    }

若此方法不适用,可以自行构造。

    $check = $this->rpc('account:/admin/check', ['id' => $this->adminID]);
    print_r($check);

这里实际请求的是http://account.esp/admin/check