开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
Swoole首页、文档和下载 - PHP 的异步并行 C 扩展 - 开源中国社区
全部项目分类
Apache
C/C++ PHP 查看源码»
跨平台
matyhtf
分享
收藏
366 人收藏
收录时间:2014-03-03
Swoole 详细介绍

PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器异步TCP/UDP网络客户端异步MySQL异步Redis数据库连接池AsyncTask消息队列毫秒定时器异步文件读写异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端Http2.0服务器端

Swoole底层内置了异步非阻塞、多线程的网络IO服务器。PHP程序员仅需处理事件回调即可,无需关心底层。与Nginx/Tornado/Node.js等全异步的框架不同,Swoole既支持全异步,也支持同步。

除了异步IO的支持之外,Swoole为PHP多进程的模式设计了多个并发数据结构和IPC通信机制,可以大大简化多进程并发编程的工作。其中包括了并发原子计数器并发HashTableChannelLock进程间通信IPC等丰富的功能特性。

Swoole从2.0版本开始支持了内置协程,可以使用完全同步的代码实现异步程序。PHP代码无需额外增加任何关键词,底层自动进行协程调度,实现异步。

Swoole可以广泛应用于互联网、移动通信、企业软件、网络游戏、物联网、车联网、智能家庭等领域。 使用PHP+Swoole作为网络通信框架,可以使企业IT研发团队的效率大大提升,更加专注于开发创新产品。

Swoole是开源免费的自由软件,授权协议是Apache2.0。企业和个人开发者均可免费使用Swoole的代码,并且在Swoole之上所作的修改可用于商业产品,无需开源(注:必须保留原作者的版权声明)。

    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 world\n");
    });
    $client->on("receive", function($cli, $data = ""){
        echo "Receive: ".$data.PHP_EOL;
    });
    $client->on("error", function($cli){
        echo "connect fail\n";
    });
    $client->on("close", function($cli){
        echo "connection close\n";
    });
    $client->connect('127.0.0.1', 9501, 0.5);

    Http服务器

    $serv = new swoole_http_server("127.0.0.1", 9502);
    
    $serv->on('Request', function($request, $response) {
        var_dump($request->get);
        var_dump($request->post);
    
        $response->cookie("User", "Swoole");
        $response->header("X-Server", "Swoole");
        $response->end("Hello Swoole!");
    });
    
    $serv->start();

    WebSocket服务器

    $serv = new swoole_websocket_server("127.0.0.1", 9502);
    
    $serv->on('Open', function($server, $req) {
        echo "connection open: ".$req->fd;
    });
    
    $serv->on('Message', function($server, $frame) {
        echo "message: ".$frame->data;
        $server->push($frame->fd, json_encode(["hello", "world"]));
    });
    
    $serv->on('Close', function($server, $fd) {
        echo "connection close: ".$fd;
    });
    
    $serv->start();
    Swoole

    选择将代码托管在码云
    你还在等什么

    可能是中国最大最好的代码托管平台


    大家对 Swoole 的评论 (全部 7 条评论)
    {{repayCom.userName}}
    虎爷
    我以后也准备做一个项目,但只写中文文档,别的他们自己去译吧,做得好,总有人帮你弄的 #swoole-server#
    matyhtf
    刀哥
    为啥很多国内的开源软件开发者,都喜欢用英语作为文档编写的主要语言呢?甚至很多项目都没用中文版的文档。都放osc上来了,还用英文?这是什么病啊。。。。 swoole-server
    matyhtf
    Github的star已过千,纪念下。 swoole-server
    新人王
    node.js不是没有多核多线程的支持方式,片面的评论容易导致误解,请慎重 swoole-server
    Swoole 相关博客
    顶部