Skip to content

zhenyangze/pacos

Repository files navigation

Pacos

php extend for nacos

安装

下载编译

git clone https://github.com/zhenyangze/pacos
cd pacos
phpize
./configure --with-php-config=${PATh}
make
make install

修改php.ini文件

extension=pacos.so

;1全局进程 2独立进程
pacos_run_mode=1

;进程保存文件
pacos_pid_file=/tmp/pacos.beat.test.pid

;心跳周期(秒)
pacos_period_time=10

;请求超时时间(秒)
pacos_http_timeout=3

;namespace可不写,默认为public
;pacos_namespace=public

;1展示异常信息
pacos_display_error=1 

;父进程检测周期(秒)
;pacos_check_period_time=5

使用

一、动态配置

初始化

$config = new \Pacos\Config('http:https://localhost', '8848');

1、获取配置

$config->get(string $dataId, string $group = "DEFAULT_GROUP", $callback = null);

示例

$config->get('nacos.example', 'com.alibaba.nacos');
$config->get('nacos.example', 'com.alibaba.nacos', function($dataId, $group) {
  return "没有获取配置信息,自定义返回";
});

2、发布配置

$config->set(string $dataId, string $group = "DEFAULT_GROUP", string $content);

示例

$config->set('nacos.example', 'com.alibaba.nacos', "demo");

3、删除配置

$config->delete(string $dataId, string $group = "DEFAULT_GROUP")

示例

$config->delete('nacos.example', 'com.alibaba.nacos');

4、监听配置

$config->listen(array $configs, int $timeout = 30)

示例

$config->listen([
    [
        'dataId' => 'nacos.example',
        "group" => 'com.alibaba.nacos',
        'contentMd5' => md5("demo")
    ]
]);

5、查询历史版本

$config->search(string $dataId, string $group, int $pageNo = 1, int $pageSize = 100)

示例

$config->search('nacos.example', 'com.alibaba.nacos');

二、服务注册与发现

初始化

$instance = new \Pacos\Instance('http:https://localhost', '8848');

1、添加实例

$instance->add(array $instance)

示例

$instance->add([
    'ip' => '127.0.0.1',
    'port' => 80,
    'serviceName' => 'test1',
]);

2、删除实例

$instance->delete(string $serviceName, string $ip, int $port, string $clusterName = null, string $namespaceId = null)

示例

$instance->delete("test", "127.0.0.1", "80");

3、查询实例列表

$instance->list(string $serviceName, string $namespaceId = null, array $clusters = [])

示例

$instance->list("test");

4、查询实例详情

$instance->get(string serviceName, string ip, int port, string namespaceId = null, string cluster = null, bool healthyOnly = false)

示例

$instance->get("test", "127.0.0.1", "80");

5、按权重获取实例

$instance->select(string $serviceName, string $namespaceId = null)

示例

$instance->select("test");

6、调用实例方法

$instance->call(string $serviceName, string $method, string $uri, array $options = [], string $namespaceId = null)

示例

$instance->call("test", "GET", "/api/user/info");

7、更新实例

$instance->update(array $instance)

示例

$instance->update([
    'ip' => '127.0.0.1',
    'port' => 80,
    'serviceName' => 'test',
]);

8、发送心跳(手动)

$instance->beat(array $beatInfo)

示例

$instance->beat([
    'ip' => '127.0.0.1',
    'port' => 80,
    'serviceName' => 'test1',
]);

9、批量注册实例,并周期性发送心跳(in fpm, swoole, cli-serve)

$instance->register(array $instanceList)

示例

$instance->register([
    [
        'ip' => '127.0.0.1',
        'port' => 80,
        'serviceName' => 'php.test',
    ],
    [
        'ip' => '127.0.0.1',
        'port' => 80,
        'serviceName' => 'php.test2',
    ]
]);

About

php extend for nacos

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published