• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Swoole 1.10.0新版本发布,增加了多项新特性

    前言

    Swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。使用 PHP + Swoole 作为网络通信框架,可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。最近,PHP的异步、并行、高性能网络通信引擎 Swoole 已发布 1.10.0 版本。此版本增加了多项新特性。下面话不多说了,来一起看看详细的介绍吧。

    自动 DNS 解析

    新版本的异步客户端不再需要使用 swoole_async_dns_lookup 解析域名了,底层实现了自动域名解析。Client 在执行 connect 方法时可直接传入域名。

    $client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
    $client->on("connect", function(swoole_client $cli) {
     $cli->send("GET / HTTP/1.1\r\n\r\n");
    });
    $client->on("receive", function(swoole_client $cli, $data){
     echo "Receive: $data";
     $cli->send(str_repeat('A', 100)."\n");
     sleep(1);
    });
    $client->on("error", function(swoole_client $cli){
     echo "error\n";
    });
    $client->on("close", function(swoole_client $cli){
     echo "Connection close\n";
    });
    //底层会自动进行异步域名解析
    $client->connect('www.baidu.com', 9501);

    慢请求日志

    新版本增加了追踪慢请求功能,可记录慢请求的 PHP 函数调用栈。

    function test()
    {
     test_sleep();
    }
    function test_sleep()
    {
     echo "sleep 5\n";
     sleep(5);
    }
    $server = new swoole_server('127.0.0.1', 9501);
    $server->set([
     'worker_num' => 1,
     'task_worker_num' => 1,
     'trace_event_worker' => true,
     'request_slowlog_timeout' => 1,
     'request_slowlog_file' => '/tmp/trace.log',
    ]);
    $server->on('Receive', function($serv, $fd, $reactor_id, $data) {
     test();
     $serv->send($fd, "Swoole: $data");
    });
    $server->start();

    处理慢请求后,/tmp/trace.log日志中将打印一行错误信息:

    [08-Jan-2018 15:21:57] [worker#0] pid 26905
    [0x00007f60cda22340] sleep() /home/htf/workspace/swoole/examples/server/trace.php:10
    [0x00007f60cda222e0] test_sleep() /home/htf/workspace/swoole/examples/server/trace.php:4
    [0x00007f60cda22280] test() /home/htf/workspace/swoole/examples/server/trace.php:28
    [0x00007f60cda22190] {closure}() /home/htf/workspace/swoole/examples/server/trace.php:42
    [0x00007f60cda22140] start() /home/htf/workspace/swoole/examples/server/trace.php:42

    新增 STREAM 模块

    新增的 stream 模块使得 Reactor、Worker、Task 进程之间的通信方式更灵活,最大程度地解耦。复杂的线上项目使用 stream 模式,请求分配调度的效率更高。

    $serv = new swoole_server("127.0.0.1", 9501);
    $serv->set(array(
     'dispatch_mode' => 7,
     'worker_num' => 2,
    ));
    $serv->on('receive', function (swoole_server $serv, $fd, $threadId, $data)
    {
     var_dump($data);
     echo "#{$serv->worker_id}>> received length=" . strlen($data) . "\n";
    });
    $serv->start();

    增加 Event::cycle 函数

    用户代码可自定义一个 EventLoop 的钩子函数,此函数会在每一轮事件循环结束时调用。方便使用 Generator + Yield 或 Promise 类 Swoole 框架实现自己的调度器。

    Swoole\Timer::tick(2000, function ($id) {
     var_dump($id);
    });
    Swoole\Event::cycle(function () {
     echo "hello [1]\n";
     Swoole\Event::cycle(function () {
     echo "hello [2]\n";
     Swoole\Event::cycle(null);
     });
    });

    其他更新内容

    下载地址

    GITHUB:https://github.com/swoole/swoole-src/releases/tag/v1.10.0

    开源中国:https://gitee.com/swoole/swoole/tree/v1.10.0/

    PECL:https://pecl.php.net/package/swoole/1.10.0

    本地下载:http://xiazai.jb51.net/201801/yuanma/swoole-src-1.10.0(jb51.net).rar

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

    您可能感兴趣的文章:
    • php安装swoole扩展的方法
    • php异步多线程swoole用法实例
    • 使用swoole扩展php websocket示例
    • 初识PHP中的Swoole
    • Swoole-1.7.22 版本已发布,修复PHP7相关问题
    上一篇:Laravel框架+Blob实现的多图上传功能示例
    下一篇:PHP实现顺时针打印矩阵(螺旋矩阵)的方法示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    Swoole 1.10.0新版本发布,增加了多项新特性 Swoole,1.10.0,新版本,发布,