三、php swoole 的TCP 服务器-执行异步任务 (Task)

二、php swoole 的TCP 服务器简单案例_Yel_Liang的博客-CSDN博客

      基于第一个 TCP 服务器,只需要增加 onTask 和 onFinish 2 个事件回调函数即可。另外需要设置 task 进程数量,可以根据任务的耗时和任务量配置适量的 task 进程

<?php

$serv = new Swoole\Server('0.0.0.0', 9501);

//设置异步任务的工作进程数量
$serv->set([
    'task_worker_num' => 4
]);

//监听连接进入事件
$serv->on('Connect', function ($server, $fd) {
    echo "Client: 用户{$fd}进入房间.\n";
});

//此回调函数在worker进程中执行
$serv->on('Receive', function($serv, $fd, $reactor_id, $data) {
    //投递异步任务
    $task_id = $serv->task($data);
    echo "任务调度: id={$task_id}\n";
});

//处理异步任务(此回调函数在task进程中执行)
$serv->on('Task', function ($serv, $task_id, $reactor_id, $data) {
    echo "任务[id={$task_id}]".PHP_EOL;
    // 等待10秒
    sleep(10);
    //返回任务执行的结果
    $serv->finish("{$data} -> OK");
});

//处理异步任务的结果(此回调函数在worker进程中执行)
$serv->on('Finish', function ($serv, $task_id, $data) {
    echo "任务[{$task_id}] 完成: {$data}".PHP_EOL;
});


//监听连接关闭事件
$serv->on('Close', function ($server, $fd) {
    echo "Client: 用户{$fd}退出房间.\n";
});

$serv->start();

          执行效果

         连接服务器

        效应效果

四、php swoole 的TCP 服务器 - 简单聊天室_Yel_Liang的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值