创建异步TCP客户端

程序代码

async_client.php

  1. $client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
  2. //注册连接成功回调
  3. $client->on("connect", function($cli) {
  4. $cli->send("hello world\n");
  5. });
  6. //注册数据接收回调
  7. $client->on("receive", function($cli, $data){
  8. echo "Received: ".$data."\n";
  9. });
  10. //注册连接失败回调
  11. $client->on("error", function($cli){
  12. echo "Connect failed\n";
  13. });
  14. //注册连接关闭回调
  15. $client->on("close", function($cli){
  16. echo "Connection close\n";
  17. });
  18. //发起连接
  19. $client->connect('127.0.0.1', 9501, 0.5);

异步客户端与上一个同步TCP客户端不同,异步客户端是非阻塞的。可以用于编写高并发的程序。swoole官方提供的redis-asyncmysql-async都是基于异步swoole_client实现的。

异步客户端需要设置回调函数,有4个事件回调必须设置onConnectonErroronReceiveonClose。分别在客户端连接成功、连接失败、收到数据、连接关闭时触发。

$client->connect() 发起连接的操作会立即返回,不存在任何等待。当对应的IO事件完成后,swoole底层会自动调用设置好的回调函数。

异步客户端只能用于cli环境