swoole的task使用

task模块用来做一些异步的慢速任务,比如webim中发广播,发送邮件等

task进程必须是同步阻塞的
task进程支持定时器

public function __construct()
{
	$this->serv = new \swoole_websocket_server('0.0.0.0',9501);
}
$this->serv->set(array(
	// 配置Task进程的数量,配置此参数后将会启用task功能。所以Server务必要注册onTask
	'task_worker_num' => 2,
));

// 在task_worker进程内被调用。
$this->serv->on('task', array($this, 'onTask'));

// 当worker进程投递的任务在task_worker中完成时,
// task进程会通过swoole_server->finish()方法将任务处理的结果发送给worker进程
$this->serv->on('finish', array($this, 'onFinish'));
//投递一个任务
$this->serv->task('project1');
/**
 * @Author      change
 * @DateTime    2018-12-20
 * @Description Task进程在调用onTask回调函数时会将进程状态切换为忙碌,这时将不再接收新的Task,当onTask函数返回时会将进程状态切换为空闲然后继续接收新的Task。
 * @参数说明      
 * @param       [type]
 * @param       \swoole_server     $server        服务器对象
 * @param       [type]             $task_id       任务id
 * @param       [type]             $src_worker_id 进程id
 * @param       [type]             $data          数据
 */
public function onTask(\swoole_server $server, $task_id, $src_worker_id, $data)
{
	// 调用成功,返回值为整数$task_id,表示此任务的ID。如果有finish回应,onFinish回调中会携带$task_id参数
	// 调用失败,返回值为false,$task_id可能为0,因此必须使用===判断是否失败
	echo '调用任务成功,任务id为:'.$task_id."\n";
	echo '任务数据'.$data."\n";
}

onTask回调
在这里插入图片描述
注意事项:在task里面不能执行异步操作,必须是同步阻塞的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值