swoole异步处理 task

swoole异步处理

服务器端

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

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

//此回调函数在worker进程中执行
$serv->on('receive', function($serv, $fd, $from_id, $data) {
    $data = trim($data);//传递的header和参数都在$data中;参数在最后一位
    $data = explode("\n",$data);//拆分为数组
    $data = json_decode(end($data),true);//json请求参数,取数组最后一位
    sleep(10);
    echo "\n";
    var_dump($data);
    //投递异步任务
    $task_id = $serv->task($data);
});

//处理异步任务(此回调函数在task进程中执行)
$serv->on('task', function ($serv, $task_id, $from_id, $data) {
    $str = "New AsyncTask[id=$task_id]".PHP_EOL;
    file_put_contents('aa.txt',$str,FILE_APPEND);
    //返回任务执行的结果
    $serv->finish("task_id -> OK");
});

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

$serv->start();

服务器请求

$data = array(
	'info'=>'test',
);
_curl_init_post("http://127.0.0.1:9501",$data);
function _curl_init_post($c_url, $c_url_data, $header='') 
{
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $c_url);
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt ($ch, CURLOPT_HEADER, 0);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1);//设置1秒过期时间
	// curl_setopt($ch, CURLOPT_NOSIGNAL, 1);//出现报错为cURL Error (28): Timeout was reached时可以打开此项
	curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($c_url_data));
	if($header) curl_setopt($ch,CURLOPT_HTTPHEADER,$header);

	curl_close($ch);
	unset($ch);
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值