Jadual Kandungan
您可能感兴趣的文章:
Rumah pembangunan bahagian belakang tutorial php Swoole 1.10.0新版本发布,增加了多项新特性解析

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

Jul 02, 2018 pm 05:58 PM
swoole Versi

最近Swoole 1.10.0版本发布了,增加多项新特性,所以下面这篇文章主要给大家介绍了关于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);
Salin selepas log masuk

慢请求日志

新版本增加了追踪慢请求功能,可记录慢请求的 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();
Salin selepas log masuk

处理慢请求后,/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
Salin selepas log masuk

新增 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();
Salin selepas log masuk

  • Reactor 和 Worker 之间通信,使用 dispatch_mode = 7 来开启

  • Worker 和 Task 之间通信,使用 task_ipc_mode = 4 来开启

增加 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);
 });
});
Salin selepas log masuk

其他更新内容

  • 更新Table::incr和Table::decr支持有符号整型

  • 兼容PHP-7.2版本

  • 修复Event::del函数无法移除标准输入句柄的问题

  • 修复Task进程内定时器间隔小于Client接收超时时间,引起Client::recv死锁的问题

  • 增加ssl_host_name配置项,用于验证SSL/TLS主机合法性

  • 使用dispatch_mode = 3时,当所有Worker为忙的状态时打印一条错误日志

  • 增加端口迭代器,可遍历某个监听端口的所有连接

  • 修复Table在非x86平台存在的内存对齐问题

  • 修复BASE模式下max_request配置无效的问题

  • 修复WebSocket服务器在某些客户端ping帧带有mask数据时回包错误的问题

  • 修复HttpClient使用HEAD方法响应内容携带Content-Length导致卡死的问题

  • 增加MySQL异步客户端对JSON格式的支持

下载地址

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实现顺时针打印矩阵(螺旋矩阵)的方法示例讲解

PHP实现判断二叉树是否对称的方法讲解

PHP利用一行代码删除目录下所有文件方法示例讲解

Atas ialah kandungan terperinci Swoole 1.10.0新版本发布,增加了多项新特性解析. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menyemak versi numpy dengan cepat Bagaimana untuk menyemak versi numpy dengan cepat Jan 19, 2024 am 08:23 AM

Numpy ialah perpustakaan matematik penting dalam Python Ia menyediakan operasi tatasusunan yang cekap dan fungsi pengiraan saintifik dan digunakan secara meluas dalam analisis data, pembelajaran mesin, pembelajaran mendalam dan bidang lain. Apabila menggunakan numpy, kita selalunya perlu menyemak nombor versi numpy untuk menentukan fungsi yang disokong oleh persekitaran semasa. Artikel ini akan memperkenalkan cara menyemak versi numpy dengan cepat dan memberikan contoh kod khusus. Kaedah 1: Gunakan atribut __version__ yang disertakan dengan numpy Modul numpy disertakan dengan __.

Bagaimana untuk menyemak versi maven Bagaimana untuk menyemak versi maven Jan 17, 2024 pm 05:06 PM

Kaedah untuk menyemak versi maven: 1. Gunakan baris arahan 2. Semak pembolehubah persekitaran 3. Gunakan IDE 4. Semak fail pom.xml. Pengenalan terperinci: 1. Gunakan baris arahan, masukkan "mvn -v" atau "mvn --version" dalam baris arahan, dan kemudian tekan Enter Ini akan memaparkan maklumat versi Maven dan maklumat versi Java; variables , pada sesetengah sistem, anda boleh menyemak pembolehubah persekitaran untuk mencari maklumat versi Maven, masukkan arahan pada baris arahan, dan kemudian tekan Enter, dsb.

Tutorial mengemas kini versi curl di bawah Linux! Tutorial mengemas kini versi curl di bawah Linux! Mar 07, 2024 am 08:30 AM

Untuk mengemas kini versi curl di bawah Linux, anda boleh mengikuti langkah di bawah: Semak versi curl semasa: Pertama, anda perlu menentukan versi curl yang dipasang dalam sistem semasa. Buka terminal dan laksanakan arahan berikut: curl --version Perintah ini akan memaparkan maklumat versi curl semasa. Sahkan versi curl tersedia: Sebelum mengemas kini curl, anda perlu mengesahkan versi terkini yang tersedia. Anda boleh melawati tapak web rasmi curl (curl.haxx.se) atau sumber perisian yang berkaitan untuk mencari versi terkini curl. Muat turun kod sumber curl: Menggunakan curl atau penyemak imbas, muat turun fail kod sumber untuk versi curl pilihan anda (biasanya .tar.gz atau .tar.bz2

Semak versi sistem pengendalian Kirin dan versi kernel Semak versi sistem pengendalian Kirin dan versi kernel Feb 21, 2024 pm 07:04 PM

Menyemak versi sistem pengendalian Kylin dan versi kernel Dalam sistem pengendalian Kirin, mengetahui cara menyemak versi sistem dan versi kernel adalah asas untuk pengurusan dan penyelenggaraan sistem. Kaedah 1 untuk menyemak versi sistem pengendalian Kylin: Gunakan fail /etc/.kyinfo Untuk menyemak versi sistem pengendalian Kylin, anda boleh menyemak fail /etc/.kyinfo. Fail ini mengandungi maklumat versi sistem pengendalian. Jalankan arahan berikut: cat/etc/.kyinfo Perintah ini akan memaparkan maklumat versi terperinci sistem pengendalian. Kaedah 2: Gunakan fail /etc/issue Cara lain untuk menyemak versi sistem pengendalian adalah dengan melihat fail /etc/issue. Fail ini juga menyediakan maklumat versi, tetapi mungkin tidak sebaik fail .kyinfo

Langkah mudah untuk mengemas kini versi pip: selesai dalam 1 minit Langkah mudah untuk mengemas kini versi pip: selesai dalam 1 minit Jan 27, 2024 am 09:45 AM

Selesai dalam satu minit: Cara mengemas kini versi pip, contoh kod khusus diperlukan Dengan perkembangan pesat Python, pip telah menjadi alat standard untuk pengurusan pakej Python. Walau bagaimanapun, seiring dengan berlalunya masa, versi pip sentiasa dikemas kini Untuk dapat menggunakan ciri terkini dan memperbaiki kemungkinan kelemahan keselamatan, adalah sangat penting untuk mengemas kini versi pip. Artikel ini akan menerangkan cara mengemas kini pip dengan cepat dalam satu minit dan memberikan contoh kod khusus. Pertama, kita perlu membuka tetingkap baris arahan. Dalam sistem Windows, anda boleh menggunakan

Cara menyemak versi Oracle yang dipasang dengan mudah Cara menyemak versi Oracle yang dipasang dengan mudah Mar 07, 2024 am 11:27 AM

Cara menyemak versi Oracle yang dipasang dengan mudah memerlukan contoh kod khusus Sebagai perisian yang digunakan secara meluas dalam sistem pengurusan pangkalan data peringkat perusahaan, pangkalan data Oracle mempunyai banyak versi dan kaedah pemasangan yang berbeza. Dalam kerja harian kami, kami sering perlu menyemak versi pangkalan data Oracle yang dipasang untuk operasi dan penyelenggaraan yang sepadan. Artikel ini akan memperkenalkan cara menyemak versi Oracle yang dipasang dengan mudah dan memberikan contoh kod tertentu. Kaedah 1: Melalui pertanyaan SQL dalam pangkalan data Oracle, kita boleh

Bagaimana untuk mengetahui sama ada antara muka dp ialah 1.2 atau 1.4? Bagaimana untuk mengetahui sama ada antara muka dp ialah 1.2 atau 1.4? Feb 06, 2024 am 10:27 AM

Antara muka DP adalah kabel antara muka yang penting dalam komputer Apabila menggunakan komputer, ramai pengguna ingin mengetahui sama ada antara muka DP adalah 1.2 atau 1.4, mereka hanya perlu menyemaknya dalam GPU-Z. Cara menentukan sama ada antara muka dp ialah 1.2 atau 1.4: 1. Mula-mula, pilih "Lanjutan" dalam GPU-Z. 2. Lihat "Monitor1" dalam "General" di bawah "Advanced", anda boleh melihat dua item "LinkRate (semasa)" dan "Lanes (semasa)". 3. Akhir sekali, jika 8.1Gbps×4 dipaparkan, ia bermakna versi DP1.3 atau lebih tinggi, biasanya DP1.4 Jika 5.4Gbps×4, maka

750,000 pusingan pertempuran satu lawan satu antara model besar, GPT-4 memenangi kejuaraan, dan Llama 3 menduduki tempat kelima 750,000 pusingan pertempuran satu lawan satu antara model besar, GPT-4 memenangi kejuaraan, dan Llama 3 menduduki tempat kelima Apr 23, 2024 pm 03:28 PM

Mengenai Llama3, keputusan ujian baharu telah dikeluarkan - komuniti penilaian model besar LMSYS mengeluarkan senarai kedudukan model besar Llama3 menduduki tempat kelima, dan terikat untuk tempat pertama dengan GPT-4 dalam kategori Bahasa Inggeris. Gambar ini berbeza daripada Penanda Aras yang lain Senarai ini berdasarkan pertempuran satu lawan satu antara model, dan penilai dari seluruh rangkaian membuat cadangan dan skor mereka sendiri. Pada akhirnya, Llama3 menduduki tempat kelima dalam senarai, diikuti oleh tiga versi GPT-4 dan Claude3 Super Cup Opus yang berbeza. Dalam senarai tunggal Inggeris, Llama3 mengatasi Claude dan terikat dengan GPT-4. Mengenai keputusan ini, ketua saintis Meta LeCun sangat gembira, tweet semula dan

See all articles