Skip to content

Commit

Permalink
Use fullname
Browse files Browse the repository at this point in the history
  • Loading branch information
twose committed Jun 1, 2020
1 parent bcfebe5 commit 9ae0098
Show file tree
Hide file tree
Showing 8 changed files with 90 additions and 75 deletions.
86 changes: 48 additions & 38 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,41 +81,50 @@ Etcd的几个基本操作的使用
#### Put

```php
$kvClient = new Etcdserverpb\KVClient('127.0.0.1:2379');
$request = new Etcdserverpb\PutRequest();
$request->setPrevKv(true);
$request->setKey('Hello');
$request->setValue('Swoole');
list($reply, $status) = $kvClient->Put($request);
if ($status === 0) {
echo "{$reply->getPrevKv()->getKey()}\n";
echo "{$reply->getPrevKv()->getValue()}\n";
} else {
echo "Error#{$status}\n";
}
$kvClient->close();
use Swoole\Coroutine;

Coroutine::create(function () {
$kvClient = new Etcdserverpb\KVClient(GRPC_SERVER_DEFAULT_URI);
$request = new Etcdserverpb\PutRequest();
$request->setPrevKv(true);
$request->setKey('Hello');
$request->setValue('Swoole');
[$reply, $status] = $kvClient->Put($request);
if ($status === 0) {
echo "{$reply->getPrevKv()->getKey()}\n";
echo "{$reply->getPrevKv()->getValue()}\n";
} else {
echo "Error#{$status}: {$reply}\n";
}
$kvClient->close();
});
```

#### Watch

> 创建一个协程负责Watch, 创建两个协程定时写入/删除键值以便观察效果
```php
use Etcdserverpb\WatchCreateRequest;
use Etcdserverpb\WatchCreateRequest\FilterType;
use Etcdserverpb\WatchRequest;
use Swoole\Coroutine;

// The Watcher
go(function () {
$watchClient = new Etcdserverpb\WatchClient('127.0.0.1:2379');
Coroutine::create(function () {
$watchClient = new Etcdserverpb\WatchClient(GRPC_SERVER_DEFAULT_URI);

$watchCall = $watchClient->Watch();
$request = new \Etcdserverpb\WatchRequest();
$createRequest = new \Etcdserverpb\WatchCreateRequest();
$request = new WatchRequest();
$createRequest = new WatchCreateRequest();
$createRequest->setKey('Hello');
$request->setCreateRequest($createRequest);

_retry:
$watchCall->push($request);
/**@var $reply Etcdserverpb\WatchResponse */
while (true) {
list($reply, $status) = $watchCall->recv();
[$reply, $status] = $watchCall->recv();
if ($status === 0) { // success
if ($reply->getCreated() || $reply->getCanceled()) {
continue;
Expand Down Expand Up @@ -148,31 +157,31 @@ go(function () {
});

// The Writer Put and Delete
go(function () {
$kvClient = new Etcdserverpb\KVClient('127.0.0.1:2379');
go(function () use ($kvClient) {
Coroutine::create(function () {
$kvClient = new Etcdserverpb\KVClient(GRPC_SERVER_DEFAULT_URI);
Coroutine::create(function () use ($kvClient) {
$request = new Etcdserverpb\PutRequest();
$request->setKey('Hello');
$request->setPrevKv(true);
while (true) {
static $count = 0;
co::sleep(.5);
Coroutine::sleep(.5);
$request->setValue('Swoole#' . (++$count));
list($reply, $status) = $kvClient->Put($request);
[$reply, $status] = $kvClient->Put($request);
if ($status !== 0) {
echo "Error#{$status}: {$reply}\n";
break;
}
}
$kvClient->close();
});
go(function () use ($kvClient) {
Coroutine::create(function () use ($kvClient) {
$request = new Etcdserverpb\DeleteRangeRequest();
$request->setKey('Hello');
$request->setPrevKv(true);
while (true) {
co::sleep(1);
list($reply, $status) = $kvClient->DeleteRange($request);
Coroutine::sleep(1);
[$reply, $status] = $kvClient->DeleteRange($request);
if ($status !== 0) {
echo "Error#{$status}: {$reply}\n";
break;
Expand All @@ -189,39 +198,41 @@ go(function () {
> 用户添加/展示/删除以及展示了如何让不同类型的EtcdClient能够使用同一个Grpc\\Client创建的连接
```php
go(function () {
$grpcClient = new Grpc\Client('127.0.0.1:2379');
use Swoole\Coroutine;

Coroutine::create(function () {
$grpcClient = new Grpc\Client(GRPC_SERVER_DEFAULT_URI);
// use in different type clients

go(function () use ($grpcClient) {
$kvClient = new Etcdserverpb\KVClient('127.0.0.1:2379', ['use' => $grpcClient]);
Coroutine::create(function () use ($grpcClient) {
$kvClient = new Etcdserverpb\KVClient(GRPC_SERVER_DEFAULT_URI, ['use' => $grpcClient]);
$request = new Etcdserverpb\PutRequest();
$request->setPrevKv(true);
$request->setKey('Hello');
$request->setValue('Swoole');
list($reply, $status) = $kvClient->Put($request);
[$reply, $status] = $kvClient->Put($request);
if ($status === 0) {
echo "\n=== PUT KV OK ===\n";
} else {
echo "Error#{$status}: {$reply}\n";
}
});

go(function () use ($grpcClient) {
$authClient = new Etcdserverpb\AuthClient('127.0.0.1:2379', ['use' => $grpcClient]);
Coroutine::create(function () use ($grpcClient) {
$authClient = new Etcdserverpb\AuthClient(GRPC_SERVER_DEFAULT_URI, ['use' => $grpcClient]);

$userRequest = new Etcdserverpb\AuthUserAddRequest();
$userNames = ['rango', 'twosee', 'gxh', 'stone', 'sjl'];
$userNames = ['ranCoroutine::create', 'twosee', 'gxh', 'stone', 'sjl'];
foreach ($userNames as $username) {
$userRequest->setName($username);
list($reply, $status) = $authClient->UserAdd($userRequest);
[$reply, $status] = $authClient->UserAdd($userRequest);
if ($status !== 0) {
goto _error;
}
}

$useListRequest = new Etcdserverpb\AuthUserListRequest();
list($reply, $status) = $authClient->UserList($useListRequest);
[$reply, $status] = $authClient->UserList($useListRequest);
if ($status !== 0) {
goto _error;
}
Expand All @@ -235,7 +246,7 @@ go(function () {
$userRequest = new Etcdserverpb\AuthUserDeleteRequest();
foreach ($userNames as $username) {
$userRequest->setName($username);
list($reply, $status) = $authClient->UserDelete($userRequest);
[$reply, $status] = $authClient->UserDelete($userRequest);
if ($status !== 0) {
goto _error;
}
Expand All @@ -253,4 +264,3 @@ go(function () {

});
```

6 changes: 4 additions & 2 deletions examples/etcd/put.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@

require_once __DIR__ . '/../../vendor/autoload.php';

go(function () {
use Swoole\Coroutine;

Coroutine::create(function () {
$kvClient = new Etcdserverpb\KVClient(GRPC_SERVER_DEFAULT_URI);
$request = new Etcdserverpb\PutRequest();
$request->setPrevKv(true);
$request->setKey('Hello');
$request->setValue('Swoole');
list($reply, $status) = $kvClient->Put($request);
[$reply, $status] = $kvClient->Put($request);
if ($status === 0) {
echo "{$reply->getPrevKv()->getKey()}\n";
echo "{$reply->getPrevKv()->getValue()}\n";
Expand Down
12 changes: 7 additions & 5 deletions examples/etcd/put_double.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,17 @@

require_once __DIR__ . '/../../vendor/autoload.php';

go(function () {
use Swoole\Coroutine;

Coroutine::create(function () {
$kvClient = new Etcdserverpb\KVClient(GRPC_SERVER_DEFAULT_URI);
$request = new Etcdserverpb\PutRequest();
$request->setPrevKv(true);

go(function () use ($kvClient, $request) {
Coroutine::create(function () use ($kvClient, $request) {
$request->setKey('Hello~');
$request->setValue('I am Swoole!');
list($reply, $status) = $kvClient->Put($request);
[$reply, $status] = $kvClient->Put($request);
if ($status === 0) {
echo "{$reply->getPrevKv()->getKey()}\n";
echo "{$reply->getPrevKv()->getValue()}\n";
Expand All @@ -19,10 +21,10 @@
}
});

go(function () use ($kvClient, $request) {
Coroutine::create(function () use ($kvClient, $request) {
$request->setKey('Hey~');
$request->setValue('How are u Etcd?');
list($reply, $status) = $kvClient->Put($request);
[$reply, $status] = $kvClient->Put($request);
if ($status === 0) {
echo "{$reply->getPrevKv()->getKey()}\n";
echo "{$reply->getPrevKv()->getValue()}\n";
Expand Down
18 changes: 10 additions & 8 deletions examples/etcd/share_client.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,41 @@

require_once __DIR__ . '/../../vendor/autoload.php';

go(function () {
use Swoole\Coroutine;

Coroutine::create(function () {
$grpcClient = new Grpc\Client(GRPC_SERVER_DEFAULT_URI);
// use in different type clients

go(function () use ($grpcClient) {
Coroutine::create(function () use ($grpcClient) {
$kvClient = new Etcdserverpb\KVClient(GRPC_SERVER_DEFAULT_URI, ['use' => $grpcClient]);
$request = new Etcdserverpb\PutRequest();
$request->setPrevKv(true);
$request->setKey('Hello');
$request->setValue('Swoole');
list($reply, $status) = $kvClient->Put($request);
[$reply, $status] = $kvClient->Put($request);
if ($status === 0) {
echo "\n=== PUT KV OK ===\n";
} else {
echo "Error#{$status}: {$reply}\n";
}
});

go(function () use ($grpcClient) {
Coroutine::create(function () use ($grpcClient) {
$authClient = new Etcdserverpb\AuthClient(GRPC_SERVER_DEFAULT_URI, ['use' => $grpcClient]);

$userRequest = new Etcdserverpb\AuthUserAddRequest();
$userNames = ['rango', 'twosee', 'gxh', 'stone', 'sjl'];
foreach ($userNames as $username) {
$userRequest->setName($username);
list($reply, $status) = $authClient->UserAdd($userRequest);
[$reply, $status] = $authClient->UserAdd($userRequest);
if ($status !== 0) {
goto _error;
}
}

$useListRequest = new Etcdserverpb\AuthUserListRequest();
list($reply, $status) = $authClient->UserList($useListRequest);
[$reply, $status] = $authClient->UserList($useListRequest);
if ($status !== 0) {
goto _error;
}
Expand All @@ -48,7 +50,7 @@
$userRequest = new Etcdserverpb\AuthUserDeleteRequest();
foreach ($userNames as $username) {
$userRequest->setName($username);
list($reply, $status) = $authClient->UserDelete($userRequest);
[$reply, $status] = $authClient->UserDelete($userRequest);
if ($status !== 0) {
goto _error;
}
Expand All @@ -64,4 +66,4 @@
$grpcClient->close();
});

});
});
10 changes: 6 additions & 4 deletions examples/etcd/stress.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,21 @@

require_once __DIR__ . '/../../vendor/autoload.php';

use Swoole\Coroutine;

ini_set('memory_limit', '154M');
co::set(['max_coroutine' => 10002]);
go(function () {
Coroutine::set(['max_coroutine' => 10002]);
Coroutine::create(function () {
$kvClient = new Etcdserverpb\KVClient(GRPC_SERVER_DEFAULT_URI);
$request = new Etcdserverpb\PutRequest();
$request->setPrevKv(true);
$request->setValue('Swoole');

$start = microtime(true);
for ($i = 10000; $i--;) {
go(function () use ($kvClient, $request, $i) {
Coroutine::create(function () use ($kvClient, $request, $i) {
$request->setKey("Hello{$i}");
list($reply, $status) = $kvClient->Put($request);
[$reply, $status] = $kvClient->Put($request);
assert($reply->getPrevKv()->getKey() === "Hello{$i}");
if ($status !== 0) {
echo "Error#{$status}: {$reply}\n";
Expand Down
23 changes: 10 additions & 13 deletions examples/etcd/watch.php
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
<?php
co::set([
'log_level' => SWOOLE_LOG_INFO,
'trace_flags' => 0,
]);

require_once __DIR__ . '/../../vendor/autoload.php';

use Etcdserverpb\WatchCreateRequest;
use Etcdserverpb\WatchCreateRequest\FilterType;
use Etcdserverpb\WatchRequest;

require_once __DIR__ . '/../../vendor/autoload.php';
use Swoole\Coroutine;

// The Watcher
go(function () {
Coroutine::create(function () {
$watchClient = new Etcdserverpb\WatchClient(GRPC_SERVER_DEFAULT_URI);

$watchCall = $watchClient->Watch();
Expand Down Expand Up @@ -57,15 +54,15 @@
});

// The Writer Put and Delete
go(function () {
Coroutine::create(function () {
$kvClient = new Etcdserverpb\KVClient(GRPC_SERVER_DEFAULT_URI);
go(function () use ($kvClient) {
Coroutine::create(function () use ($kvClient) {
$request = new Etcdserverpb\PutRequest();
$request->setKey('Hello');
$request->setPrevKv(true);
while (true) {
static $count = 0;
co::sleep(.5);
Coroutine::sleep(.5);
$request->setValue('Swoole#' . (++$count));
[$reply, $status] = $kvClient->Put($request);
if ($status !== 0) {
Expand All @@ -75,12 +72,12 @@
}
$kvClient->close();
});
go(function () use ($kvClient) {
Coroutine::create(function () use ($kvClient) {
$request = new Etcdserverpb\DeleteRangeRequest();
$request->setKey('Hello');
$request->setPrevKv(true);
while (true) {
co::sleep(1);
Coroutine::sleep(1);
[$reply, $status] = $kvClient->DeleteRange($request);
if ($status !== 0) {
echo "Error#{$status}: {$reply}\n";
Expand All @@ -89,4 +86,4 @@
}
$kvClient->close();
});
});
});
6 changes: 3 additions & 3 deletions examples/grpc/greeter_client.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@

$name = !empty($argv[1]) ? $argv[1] : 'Swoole';

go(function () use ($name) {
Swoole\Coroutine::create(function () use ($name) {
$greeterClient = new GreeterClient('127.0.0.1:50051');
$request = new HelloRequest();
$request->setName($name);
list($reply) = $greeterClient->SayHello($request);
[$reply] = $greeterClient->SayHello($request);
$message = $reply->getMessage();
echo "{$message}\n";
$greeterClient->close();
});
});
Loading

0 comments on commit 9ae0098

Please sign in to comment.