当前位置: 软件>C/C++软件
PHP的异步并行C扩展 swoole-server
本文导语: Swoole是一个PHP的C扩展,可用来开发PHP的高性能高并发TCP/UDP Server。Swoole的网络IO部分基于epoll/kqueue事件循环,是全异步非阻塞的。 业务逻辑部分使用多进程同步阻塞方式来运行。这样既保证了Server能够应对高并发和大量TCP连接...
Swoole是一个PHP的C扩展,可用来开发PHP的高性能高并发TCP/UDP Server。Swoole的网络IO部分基于epoll/kqueue事件循环,是全异步非阻塞的。 业务逻辑部分使用多进程同步阻塞方式来运行。这样既保证了Server能够应对高并发和大量TCP连接。又保证业务代码仍然可以简单的编写。
Swoole与Node.js相比更强大,支持同步/异步、多进程并行,Swoole提供了进程生命周期管理、内存保护机制,开发者无需考虑底层细节,专注于业务逻辑和功能的开发。
Swoole的网络事件处理是多线程的,可以充分利用多核。而Node.js是单进程单线程的。使用官方提供的EchoServer在多核环境下压测。Swoole的处理能力比node.js高出数倍。
Server
$serv = new swoole_server("127.0.0.1", 9501); $serv->on('connect', function ($serv, $fd){ echo "Client:Connect.n"; }); $serv->on('receive', function ($serv, $fd, $from_id, $data) { $serv->send($fd, 'Swoole: '.$data); $serv->close($fd); }); $serv->on('close', function ($serv, $fd) { echo "Client: Close.n"; }); $serv->start();
Client
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC); $client->on("connect", function($cli) { $cli->send("hello worldn"); }); $client->on("receive", function($cli, $data = ""){ echo "Receive: ".$data.PHP_EOL; }); $client->on("error", function($cli){ echo "connect failn"; }); $client->on("close", function($cli){ echo "connection closen"; }); $client->connect('127.0.0.1', 9501, 0.5);