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