@@ -81,41 +81,50 @@ Etcd的几个基本操作的使用
8181#### Put
8282
8383``` php
84- $kvClient = new Etcdserverpb\KVClient('127.0.0.1:2379');
85- $request = new Etcdserverpb\PutRequest();
86- $request->setPrevKv(true);
87- $request->setKey('Hello');
88- $request->setValue('Swoole');
89- list($reply, $status) = $kvClient->Put($request);
90- if ($status === 0) {
91- echo "{$reply->getPrevKv()->getKey()}\n";
92- echo "{$reply->getPrevKv()->getValue()}\n";
93- } else {
94- echo "Error#{$status}\n";
95- }
96- $kvClient->close();
84+ use Swoole\Coroutine;
85+
86+ Coroutine::create(function () {
87+ $kvClient = new Etcdserverpb\KVClient(GRPC_SERVER_DEFAULT_URI);
88+ $request = new Etcdserverpb\PutRequest();
89+ $request->setPrevKv(true);
90+ $request->setKey('Hello');
91+ $request->setValue('Swoole');
92+ [$reply, $status] = $kvClient->Put($request);
93+ if ($status === 0) {
94+ echo "{$reply->getPrevKv()->getKey()}\n";
95+ echo "{$reply->getPrevKv()->getValue()}\n";
96+ } else {
97+ echo "Error#{$status}: {$reply}\n";
98+ }
99+ $kvClient->close();
100+ });
97101```
98102
99103#### Watch
100104
101105> 创建一个协程负责Watch, 创建两个协程定时写入/删除键值以便观察效果
102106
103107``` php
108+ use Etcdserverpb\WatchCreateRequest;
109+ use Etcdserverpb\WatchCreateRequest\FilterType;
110+ use Etcdserverpb\WatchRequest;
111+ use Swoole\Coroutine;
112+
104113// The Watcher
105- go (function () {
106- $watchClient = new Etcdserverpb\WatchClient('127.0.0.1:2379' );
114+ Coroutine::create (function () {
115+ $watchClient = new Etcdserverpb\WatchClient(GRPC_SERVER_DEFAULT_URI );
107116
108117 $watchCall = $watchClient->Watch();
109- $request = new \Etcdserverpb\ WatchRequest();
110- $createRequest = new \Etcdserverpb\ WatchCreateRequest();
118+ $request = new WatchRequest();
119+ $createRequest = new WatchCreateRequest();
111120 $createRequest->setKey('Hello');
112121 $request->setCreateRequest($createRequest);
113122
114123 _retry:
115124 $watchCall->push($request);
116125 /**@var $reply Etcdserverpb\WatchResponse */
117126 while (true) {
118- list( $reply, $status) = $watchCall->recv();
127+ [ $reply, $status] = $watchCall->recv();
119128 if ($status === 0) { // success
120129 if ($reply->getCreated() || $reply->getCanceled()) {
121130 continue;
@@ -148,31 +157,31 @@ go(function () {
148157});
149158
150159// The Writer Put and Delete
151- go (function () {
152- $kvClient = new Etcdserverpb\KVClient('127.0.0.1:2379' );
153- go (function () use ($kvClient) {
160+ Coroutine::create (function () {
161+ $kvClient = new Etcdserverpb\KVClient(GRPC_SERVER_DEFAULT_URI );
162+ Coroutine::create (function () use ($kvClient) {
154163 $request = new Etcdserverpb\PutRequest();
155164 $request->setKey('Hello');
156165 $request->setPrevKv(true);
157166 while (true) {
158167 static $count = 0;
159- co ::sleep(.5);
168+ Coroutine ::sleep(.5);
160169 $request->setValue('Swoole#' . (++$count));
161- list( $reply, $status) = $kvClient->Put($request);
170+ [ $reply, $status] = $kvClient->Put($request);
162171 if ($status !== 0) {
163172 echo "Error#{$status}: {$reply}\n";
164173 break;
165174 }
166175 }
167176 $kvClient->close();
168177 });
169- go (function () use ($kvClient) {
178+ Coroutine::create (function () use ($kvClient) {
170179 $request = new Etcdserverpb\DeleteRangeRequest();
171180 $request->setKey('Hello');
172181 $request->setPrevKv(true);
173182 while (true) {
174- co ::sleep(1);
175- list( $reply, $status) = $kvClient->DeleteRange($request);
183+ Coroutine ::sleep(1);
184+ [ $reply, $status] = $kvClient->DeleteRange($request);
176185 if ($status !== 0) {
177186 echo "Error#{$status}: {$reply}\n";
178187 break;
@@ -189,39 +198,41 @@ go(function () {
189198> 用户添加/展示/删除以及展示了如何让不同类型的EtcdClient能够使用同一个Grpc\\ Client创建的连接
190199
191200``` php
192- go(function () {
193- $grpcClient = new Grpc\Client('127.0.0.1:2379');
201+ use Swoole\Coroutine;
202+
203+ Coroutine::create(function () {
204+ $grpcClient = new Grpc\Client(GRPC_SERVER_DEFAULT_URI);
194205 // use in different type clients
195206
196- go (function () use ($grpcClient) {
197- $kvClient = new Etcdserverpb\KVClient('127.0.0.1:2379' , ['use' => $grpcClient]);
207+ Coroutine::create (function () use ($grpcClient) {
208+ $kvClient = new Etcdserverpb\KVClient(GRPC_SERVER_DEFAULT_URI , ['use' => $grpcClient]);
198209 $request = new Etcdserverpb\PutRequest();
199210 $request->setPrevKv(true);
200211 $request->setKey('Hello');
201212 $request->setValue('Swoole');
202- list( $reply, $status) = $kvClient->Put($request);
213+ [ $reply, $status] = $kvClient->Put($request);
203214 if ($status === 0) {
204215 echo "\n=== PUT KV OK ===\n";
205216 } else {
206217 echo "Error#{$status}: {$reply}\n";
207218 }
208219 });
209220
210- go (function () use ($grpcClient) {
211- $authClient = new Etcdserverpb\AuthClient('127.0.0.1:2379' , ['use' => $grpcClient]);
221+ Coroutine::create (function () use ($grpcClient) {
222+ $authClient = new Etcdserverpb\AuthClient(GRPC_SERVER_DEFAULT_URI , ['use' => $grpcClient]);
212223
213224 $userRequest = new Etcdserverpb\AuthUserAddRequest();
214- $userNames = ['rango ', 'twosee', 'gxh', 'stone', 'sjl'];
225+ $userNames = ['ranCoroutine::create ', 'twosee', 'gxh', 'stone', 'sjl'];
215226 foreach ($userNames as $username) {
216227 $userRequest->setName($username);
217- list( $reply, $status) = $authClient->UserAdd($userRequest);
228+ [ $reply, $status] = $authClient->UserAdd($userRequest);
218229 if ($status !== 0) {
219230 goto _error;
220231 }
221232 }
222233
223234 $useListRequest = new Etcdserverpb\AuthUserListRequest();
224- list( $reply, $status) = $authClient->UserList($useListRequest);
235+ [ $reply, $status] = $authClient->UserList($useListRequest);
225236 if ($status !== 0) {
226237 goto _error;
227238 }
@@ -235,7 +246,7 @@ go(function () {
235246 $userRequest = new Etcdserverpb\AuthUserDeleteRequest();
236247 foreach ($userNames as $username) {
237248 $userRequest->setName($username);
238- list( $reply, $status) = $authClient->UserDelete($userRequest);
249+ [ $reply, $status] = $authClient->UserDelete($userRequest);
239250 if ($status !== 0) {
240251 goto _error;
241252 }
@@ -253,4 +264,3 @@ go(function () {
253264
254265});
255266```
256-
0 commit comments