swoole同步和异步实例

TCP异步服务器:

server.php
<?php
$serv=new swoole_server("127.0.0.1",9501); //创建TCP服务器
$serv->set(array('task_worker_num'=>4));   //设置异步进程工作数
//投递异步任务
$serv->on("receive",function($serv,$fd,$from_id,$data){
    $task_id=$serv->task($data);
    echo "异步ID是:$task_id";
    $serv->send($fd,"Swoole:".$data);
});
//处理异步任务
echo "执行的异步ID:$task_id";
$serv->finish("$data->OK");
})
//处理结果
$serv->on("finish",function($serv,$task_id,$data){
    echo "执行完成";
});
$serv->start();

client.php:
<?php
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
$client->on("connect", function($cli) {
    $cli->send("hello Swoole\n");
});
$client->on("receive", function($cli, $data){
    echo "Receive: $data\n";
});
$client->on("error", function($cli){
    echo "connect fail\n";
});
$client->on("close", function($cli){
    echo "close\n";
});
$client->connect(‘127.0.0.1‘, 9502, 0.5);
先打开一个命令窗口,运行php server.php
同时再打开一个命令窗口,运行php client.php
   
异步server和client:

server.php:
<?php
$server = new swoole_server("127.0.0.1", 9501);
$server->on('connect', function ($server, $fd){
    echo "connection open: {$fd}\n";
});
$server->on('receive', function ($server, $fd, $reactor_id, $data) {
    $server->send($fd, "Swoole: {$data}");
    $server->close($fd);
});
$server->on('close', function ($server, $fd) {
    echo "connection close: {$fd}\n";
});
$server->start();

client.php异步调用:
<?php
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
$client->on("connect", function($cli) {
    $cli->send("hello world\n");
});
$client->on("receive", function($cli, $data){
    echo "received: {$data}\n";
});
$client->on("error", function($cli){
    echo "connect failed\n";
});
$client->on("close", function($cli){
    echo "connection close\n";
});
$client->connect("127.0.0.1", 9501, 0.5);
    echo "received: {$data}\n";
php server.php
php client.php

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值