99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>Swow高性能純協(xié)程網(wǎng)絡(luò)通信引擎

Swow高性能純協(xié)程網(wǎng)絡(luò)通信引擎

2022-06-17 | zip | 1.14 MB | 次下載 | 免費(fèi)

資料介紹

授權(quán)協(xié)議 Apache-2.0
開(kāi)發(fā)語(yǔ)言 C/C++ PHP
操作系統(tǒng) 跨平臺(tái)
軟件類(lèi)型 開(kāi)源軟件
所屬分類(lèi) 程序開(kāi)發(fā)、 網(wǎng)絡(luò)工具包

軟件簡(jiǎn)介

Swow 是一個(gè)使用 PHP 和 C 編寫(xiě)的高性能純協(xié)程網(wǎng)絡(luò)通信引擎。它致力于使用最小C核心及多數(shù)PHP代碼以支持PHP高性能網(wǎng)絡(luò)編程。

協(xié)程

Swow實(shí)現(xiàn)了一套有史以來(lái)最完整的PHP協(xié)程模型,它全面釋放了PHP的真正實(shí)力,使得開(kāi)發(fā)者可以做到以往難以想象的事情。

高性能

支持每秒百萬(wàn)次上下文切換。且由于Swow支持純C協(xié)程與PHP協(xié)程混合運(yùn)行,兩者之間僅進(jìn)行C棧單棧上下文切換,且Swow的事件調(diào)度器就是純C協(xié)程,因此大部分協(xié)程切換都是單棧切換,其切換速度遠(yuǎn)超C + PHP的雙棧切換。

高可控

現(xiàn)在協(xié)程可以使得PHP虛擬機(jī)像一個(gè)迷你操作系統(tǒng)一樣,其中運(yùn)行的協(xié)程近似于操作系統(tǒng)的進(jìn)程/線程,開(kāi)發(fā)者能夠以超細(xì)粒度任意操控這些協(xié)程,如查看所有協(xié)程的運(yùn)行狀態(tài)、attach進(jìn)入?yún)f(xié)程、單步調(diào)試跟蹤、查看協(xié)程棧乃至每個(gè)棧幀、查看或修改協(xié)程內(nèi)變量、中斷協(xié)程或殺死協(xié)程等。

基于這樣的可控性,開(kāi)發(fā)者還可以借助WatchDog組件對(duì)陷入死循環(huán)或處于IO阻塞的協(xié)程進(jìn)行警報(bào)、中斷、讓出甚至殺死等多種處理,以避免個(gè)別協(xié)程影響到程序整體穩(wěn)定性。

并且,其與進(jìn)程設(shè)計(jì)哲學(xué)的契合性,也決定了協(xié)程應(yīng)用的健壯性極佳。正如單個(gè)進(jìn)程的崩潰不會(huì)導(dǎo)致整個(gè)系統(tǒng)的崩潰一樣,單個(gè)協(xié)程的崩潰也不會(huì)導(dǎo)致整個(gè)進(jìn)程的崩潰,并且得益于PHP強(qiáng)大的異常機(jī)制和資源管理能力,與協(xié)程綁定的相關(guān)資源都能被安全地釋放。你無(wú)需再為未捕獲的異常殫精竭力,也不要再去捕獲Throwable,遇到未知的錯(cuò)誤請(qǐng)Let it crash。

易兼容

無(wú)需創(chuàng)建協(xié)程也無(wú)需判斷是否在協(xié)程環(huán)境,在Swow中,所及之處,皆為協(xié)程,打開(kāi)編輯器,即刻就可以開(kāi)始書(shū)寫(xiě)你的代碼!這也意味著它將更好地兼容已有的生態(tài),我們?cè)僖膊恍枰獮镻HPUnit重寫(xiě)一個(gè)由協(xié)程包裹的入口。

事件驅(qū)動(dòng)

Swow基于協(xié)程事件庫(kù)libcat開(kāi)發(fā),libcat又基于異步事件庫(kù)libuv開(kāi)發(fā),得益于此,我們擁有了經(jīng)過(guò)工業(yè)級(jí)驗(yàn)證的事件循環(huán)驅(qū)動(dòng),并且它支持幾乎所有常見(jiàn)操作系統(tǒng)。因此,Swow也是首個(gè)能在原生Windows平臺(tái)運(yùn)行,且通過(guò)IOCP驅(qū)動(dòng)的PHP協(xié)程網(wǎng)絡(luò)編程引擎。由于libuv遵循Proactor模型,不久后我們又可以在Linux下免費(fèi)獲得由新特性io_uring帶來(lái)的可觀性能提升。

PHP可編程性

最小C核心意味著底層不再包攬所有事務(wù),而是僅提供最細(xì)粒度的基礎(chǔ)接口,即擴(kuò)展層不再像是一個(gè)框架(framework),而更像是庫(kù)(library),這將使PHP的編程能力最大化。

且隨著PHP8和JIT的到來(lái),我們?yōu)槭裁催€要大量使用C或是C++來(lái)完成那些PHP也能做到的工作呢?更多地使用PHP而不是C、C++,也契合了PHP內(nèi)核的未來(lái)發(fā)展方向。

更強(qiáng)的可編程性也帶來(lái)了更多的可能性。試想一下,曾經(jīng)你想寫(xiě)一個(gè)簡(jiǎn)單的WAF程序,通過(guò)檢測(cè)IP或是解析HTTP頭部來(lái)實(shí)施一些鑒權(quán)操作,但當(dāng)你在回調(diào)中拿到請(qǐng)求對(duì)象時(shí),底層已經(jīng)替你完成了整個(gè)請(qǐng)求的接收,龐大的HTTP報(bào)文解析或許已經(jīng)損害了你的程序性能。

但現(xiàn)在,Swow提供的Buffer模塊使得PHP可以像C一樣精細(xì)地進(jìn)行內(nèi)存管理,結(jié)合Socket模塊和一些協(xié)議解析器,它允許你掌握小到每個(gè)字節(jié)的接收和解析,或許在未來(lái)開(kāi)發(fā)者完全可以使用Swow編寫(xiě)高性能的網(wǎng)關(guān)程序,一切都可以通過(guò)PHP編程的方式改變,且它們?nèi)际莾?nèi)存安全的。

現(xiàn)代化

面向?qū)ο?/h3>

Swow在面向?qū)ο蟮牡缆飞虾蚉HP的進(jìn)化路線如出一轍,不管是早期的PHP或是其它有悠久歷史的擴(kuò)展,對(duì)于API的設(shè)計(jì)大都是面向過(guò)程的,而經(jīng)過(guò)多年發(fā)展,PHP社區(qū)早已是面向?qū)ο蟮奶煜?,PHP也為內(nèi)建API的面向?qū)ο笾С侄恍概?。面向?qū)ο笫沟梦覀兛梢愿玫鼗赟wow庫(kù)進(jìn)行二次封裝,我們可以直接繼承內(nèi)部類(lèi)并實(shí)現(xiàn)PSR接口以0成本支持PSR規(guī)范,這在實(shí)際應(yīng)用中讓我們的程序性能得到了極大的提升。

擁抱異常

Swow在錯(cuò)誤處理方面和PHP的改革理念也是一致的,PHP8干掉了大量的notice、warning、error,轉(zhuǎn)而使用基于異常機(jī)制的Error/Exception,極大地增強(qiáng)了程序的健壯性(不要再讓錯(cuò)誤的程序繼續(xù)運(yùn)行下去)。

曾經(jīng)我們要求開(kāi)發(fā)者在每個(gè)IO操作后檢查返回值,否則程序就可能陷入非預(yù)期的錯(cuò)誤狀態(tài)中,這樣的編碼方式,無(wú)異于是一種歷史的倒退,干掉if ($err != null),擁抱異常機(jī)制,才是正確的發(fā)展道路。

而基于上述改進(jìn),我們現(xiàn)在能以鏈?zhǔn)秸{(diào)用的方式書(shū)寫(xiě)代碼,使代碼變得更加簡(jiǎn)潔且富有節(jié)奏感。

綠色增強(qiáng)

Swow和Opcache非常相似,兩者都允許開(kāi)發(fā)者在幾乎不改變代碼的情況下,僅通過(guò)開(kāi)啟擴(kuò)展就能使得應(yīng)用程序獲得免費(fèi)大量的能力提升。即保證相同的代碼具有一致的輸出結(jié)果,但它們?cè)诘讓铀\(yùn)行的指令或是系統(tǒng)調(diào)用可能不盡相同。

因此,Swow理所當(dāng)然地支持所有SAPI(CLI,F(xiàn)PM等)。但需要注意的是,受制于FPM的模型,你無(wú)法簡(jiǎn)單地通過(guò)開(kāi)啟Swow直接獲得性能上的提升,但它仍能在功能上對(duì)FPM進(jìn)行增強(qiáng)(如并發(fā)請(qǐng)求接口、執(zhí)行異步任務(wù)等)。

此外,即使是傳統(tǒng)的同步阻塞應(yīng)用,也可以使用Swow生態(tài)下的應(yīng)用組件,如使用Swow提供的Debugger工具對(duì)程序進(jìn)行斷點(diǎn)調(diào)試分析等。

線程安全

Swow支持在PHP的ZTS(Zend Thread Safety)版本下運(yùn)行,即基于內(nèi)存隔離的多線程支持。

這意味著它可以和parallel、pthreads等多線程擴(kuò)展很好地結(jié)合使用,但Swow本身不會(huì)提供任何多線程支持。

學(xué)習(xí)成本

Swow是否又是一個(gè)全新的輪子?答案是否定的。如果你熟悉如Swoole這樣的協(xié)程庫(kù),那么你幾乎無(wú)需任何學(xué)習(xí)成本就可以上手Swow,反之,Swow可能更易于上手,因?yàn)樗F(xiàn)代化,面向?qū)ο?、異常機(jī)制、純協(xié)程、零異步回調(diào)等一切特性都只為了讓你的編碼更加從容優(yōu)雅。

此外,如果你的項(xiàng)目使用了社區(qū)流行協(xié)程框架,那么它的升級(jí)成本可能僅和由PHP5升級(jí)到PHP7相當(dāng),并且你還可能因此獲得20%的免費(fèi)性能提升和可觀的內(nèi)存占用縮減。

現(xiàn)階段的Swow非常適合技術(shù)先驅(qū)和極客們嘗鮮,它將走在PHP異步協(xié)程技術(shù)的前沿,擁抱變化甚至引領(lǐng)變化。

編程理念

Swow遵循CSP的并發(fā)模型,而不是Callback模型。在實(shí)現(xiàn)上來(lái)說(shuō),協(xié)程是異步回調(diào)的超集,通過(guò)創(chuàng)建新的協(xié)程可以模擬異步回調(diào),而反之則不行。

兩個(gè)問(wèn)題

Swoole/Swow對(duì)于并發(fā)網(wǎng)絡(luò)編程支持的技術(shù)抉擇終結(jié)于克服兩個(gè)巨大的現(xiàn)實(shí)技術(shù)難題:一個(gè)是回調(diào)地獄,另一個(gè)是生態(tài)。

一個(gè)選擇

PHP異步網(wǎng)絡(luò)編程技術(shù)的奠基者Swoole早期就嘗試了異步回調(diào)模型,但在實(shí)際開(kāi)發(fā)中該技術(shù)常常制造出難以維護(hù)的代碼,而協(xié)程技術(shù)可以解決嵌套異步回調(diào)代碼可維護(hù)性極差的問(wèn)題并減輕開(kāi)發(fā)者的心智負(fù)擔(dān)。

而選擇有棧協(xié)程技術(shù)而不是無(wú)棧協(xié)程,則是為了更好地復(fù)用已有的龐大的PHP生態(tài)。在這一點(diǎn)上,其它已知的異步事件庫(kù)都走在了與PHP原有生態(tài)更加割裂的方向上。在Swow中,我們可以完美復(fù)用大量的PHP網(wǎng)絡(luò)設(shè)施庫(kù)及基于它們開(kāi)發(fā)的海量PHP包支持而無(wú)需修改任何代碼。

協(xié)程思維

此外,在純協(xié)程的編程理念中,我們不應(yīng)再以異步回調(diào)的方式去思考代碼實(shí)現(xiàn)。以實(shí)現(xiàn)一個(gè)有限次數(shù)的定時(shí)任務(wù)為例,我們不再應(yīng)該先想到異步定時(shí)器,使用異步定時(shí)器實(shí)現(xiàn)我們需要借助全局變量上下文保存狀態(tài)并對(duì)其計(jì)數(shù),在執(zhí)行指定次數(shù)后刪除定時(shí)器,而在協(xié)程的方式下,我們只是簡(jiǎn)單地新建一個(gè)協(xié)程并for循環(huán)指定次數(shù),每次循環(huán)通過(guò)sleep()掛起指定的時(shí)間,再執(zhí)行任務(wù)。

顯然協(xié)程方式的好處是代碼直觀且上下文信息不會(huì)丟失。異步定時(shí)器的每次執(zhí)行都需要一個(gè)全新的回調(diào)堆棧,在異步混合協(xié)程的實(shí)現(xiàn)下,每次回調(diào)都必須創(chuàng)建一個(gè)新的協(xié)程,此時(shí)純協(xié)程實(shí)現(xiàn)的各種好處就不言而喻了。

?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1DD3118電路圖紙資料
  2. 0.08 MB   |  1次下載  |  免費(fèi)
  3. 2AD庫(kù)封裝庫(kù)安裝教程
  4. 0.49 MB   |  1次下載  |  免費(fèi)
  5. 3PC6206 300mA低功耗低壓差線性穩(wěn)壓器中文資料
  6. 1.12 MB   |  1次下載  |  免費(fèi)
  7. 4網(wǎng)絡(luò)安全從業(yè)者入門(mén)指南
  8. 2.91 MB   |  1次下載  |  免費(fèi)
  9. 5DS-CS3A P00-CN-V3
  10. 618.05 KB  |  1次下載  |  免費(fèi)
  11. 6海川SM5701規(guī)格書(shū)
  12. 1.48 MB  |  次下載  |  免費(fèi)
  13. 7H20PR5電磁爐IGBT功率管規(guī)格書(shū)
  14. 1.68 MB   |  次下載  |  1 積分
  15. 8IP防護(hù)等級(jí)說(shuō)明
  16. 0.08 MB   |  次下載  |  免費(fèi)

本月

  1. 1貼片三極管上的印字與真實(shí)名稱(chēng)的對(duì)照表詳細(xì)說(shuō)明
  2. 0.50 MB   |  103次下載  |  1 積分
  3. 2涂鴉各WiFi模塊原理圖加PCB封裝
  4. 11.75 MB   |  89次下載  |  1 積分
  5. 3錦銳科技CA51F2 SDK開(kāi)發(fā)包
  6. 24.06 MB   |  43次下載  |  1 積分
  7. 4錦銳CA51F005 SDK開(kāi)發(fā)包
  8. 19.47 MB   |  19次下載  |  1 積分
  9. 5PCB的EMC設(shè)計(jì)指南
  10. 2.47 MB   |  16次下載  |  1 積分
  11. 6HC05藍(lán)牙原理圖加PCB
  12. 15.76 MB   |  13次下載  |  1 積分
  13. 7802.11_Wireless_Networks
  14. 4.17 MB   |  12次下載  |  免費(fèi)
  15. 8蘋(píng)果iphone 11電路原理圖
  16. 4.98 MB   |  6次下載  |  2 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935127次下載  |  10 積分
  3. 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191390次下載  |  10 積分
  9. 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  10. 158M  |  183342次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81588次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73815次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65989次下載  |  10 積分