当前位置: 首页 > 后端技术 > PHP

初识swoole【下篇】

时间:2023-03-29 16:25:36 PHP

前言:接着是第一次接触swoole【Part1】,这篇文章主要是关于异步的问题。如果有收获,请加个小star。如果没有收获,可以不帮忙反对举报。三联代码仓库初识swoole【第二部分】六、异步任务set(['task_worker_num'=>4]);//连接$server->on("connect",function(swoole_server$server,$fd){dump("{$fd}connect");$server->send($fd,"欢迎{$fd}大山驴\n");});//接收回调$server->on("receive",function(swoole_server$server,$fd,$from_id,$data){//下发异步任务$task_id=$server->task($data);dump("触发异步任务ID={$task_id}");$server->send($fd,"服务器回复:{$data}\n");foreach($server->connectionsas$connection){if($connection!=$fd){$server->send($connection,"{$fd}says{$data}");}}});//task处理异步任务$server->on("task",function(swoole_server$server,$task_id,$from_id,$data){dump("新建异步任务[ID={$task_id}]");//返回resultoftaskexecution$server->finish("{$data}completed");});//完成处理异步任务的结果$server->on("finish",function(swoole_server$server,$task_id,$data){dump("异步任务[{$task_id}]已完成[{$data}]");});//close$server->on("close",function(swoole_server$server,$fd){dump("{$fd}closed");foreach($server->connectionsas$connection){if($connection!=$fd){$server->send($connection,"{$fd}disconnect");}}});//启动$server->start();phpasync.phptelnet127.0.0.195057,同步TCP客户端connect(HOST,9501,0.5)){dump("连接失败");}//sendif(!$client->send("Youareabadass\n")){dump("发送失败");}//receiveif(!$data=$client->recv()){dump("接收失败");}dump($data);//close$client->close();phptcp_server.phpphptcp_sync_client.php8,异步TCP客户端on("connect",function(\Swoole\Clie新台币$cli){$cli->send("Youbitch\n");});//receive$client->on("receive",function(\Swoole\Client$cli,$data){dump("receive:{$data}");});//error$client->on("error",function(\Swoole\Client$cli){dump("Connectionfailed");});//close$client->on("close",function(\Swoole\Client$cli){dump("connectionclose");});$client->connect(HOST,9501,0.5);phptcp_server.phpphptcp_async_client.php9、异步客户端mysql//异步mysql客户端$db=new\Swoole\Mysql();$config=['host'=>'127.0.0.1','user'=>'root','password'=>'root','database'=>'mac','port'=>'3307',];$db->connect($config,function(\Swoole\Mysql$db,$rs){$db->query('SELECT*FROMuser',function(\Swoole\Mysql$db,$rs){dump($rs);$db->close();});});http//异步http客户端$cli=newSwoole\Http\Client('127.0.0.1',80);$cli->setHeaders(array('User-Agent'=>'swoole-http-client'));$cli->setCookies(array('test'=>'value'));$cli->get('/登录',function(\Swoole\Http\Client$cli){dump($cli->statusCode);转储($cli->cookies);dump($cli->headers);});10、协程客户端//协程mysql客户端$http=newswoole_http_server(HOST,9506);$http->on('request',function($request,$response){$db=new\Swoole\Coroutine\Mysql();$db->connect(['host'=>'127.0.0.1','user'=>'root','password'=>'root','database'=>'mac','port'=>'3307',]);$data=$db->query('select*fromuser');dump($data);$response->end(json_encode($data));});$http->start();phpcoroutine_client.phpcurl-XGET"127.0.0.1:9506"