Workerman是一款開源高性能異步PHP socket即時(shí)通訊框架。本文就來(lái)為大家介紹一些Workerman的特性,希望都大家有一定的幫助。
相關(guān)推薦:《workerman教程》
WorkerMan的特性介紹:
1、純PHP開發(fā)
使用WorkerMan開發(fā)的應(yīng)用程序不依賴php-fpm、apache、nginx這些容器就可以獨(dú)立運(yùn)行。 這使得PHP開發(fā)者開發(fā)、部署、調(diào)試應(yīng)用程序非常方便。
2、支持PHP多進(jìn)程
為了充分發(fā)揮服務(wù)器多CPU的性能,WorkerMan默認(rèn)支持多進(jìn)程多任務(wù)。WorkerMan開啟一個(gè)主進(jìn)程和多個(gè)子進(jìn)程對(duì)外提供服務(wù), 主進(jìn)程負(fù)責(zé)監(jiān)控子進(jìn)程,子進(jìn)程獨(dú)自監(jiān)聽網(wǎng)絡(luò)連接并接收發(fā)送及處理數(shù)據(jù),由于進(jìn)程模型簡(jiǎn)單,使得WorkerMan更加穩(wěn)定,更加高效。
3、支持TCP、UDP
WorkerMan支持TCP和UDP兩種傳**傳輸協(xié)議**,只需要更改一個(gè)屬性便可以更換傳輸層協(xié)議,業(yè)務(wù)代碼無(wú)需改動(dòng)。
4、支持長(zhǎng)連接
很多時(shí)候需要PHP應(yīng)用程序要與客戶端保持長(zhǎng)連接,比如聊天室、游戲等,但是傳統(tǒng)的PHP容器(apache、nginx、php-fpm)很難做到這一點(diǎn)。?
使用WorkerMan,只要服務(wù)端業(yè)務(wù)不主動(dòng)調(diào)用關(guān)閉連接接口,便可以使用PHP長(zhǎng)連接。WorkerMan單個(gè)進(jìn)程可以支持上萬(wàn)的并發(fā)連接,多進(jìn)程則支持?jǐn)?shù)十萬(wàn)的甚至百萬(wàn)并發(fā)連接。
5、支持各種應(yīng)用層協(xié)議
WorkerMan接口上支持各種應(yīng)用層協(xié)議,包括自定義協(xié)議。在WorkerMan中更換協(xié)議同樣非常簡(jiǎn)單,同樣只是配置一個(gè)字段,協(xié)議自動(dòng)切換,業(yè)務(wù)代碼零改動(dòng),甚至可以開啟多個(gè)不同協(xié)議的端口,滿足不同的客戶端需求。
6、支持高并發(fā)、
WorkerMan支持Libevent事件輪詢庫(kù)(需要安裝Libevent擴(kuò)展), 使用Libevent在高并發(fā)時(shí)性能非常卓越,如果沒(méi)有安裝Libevent則使用PHP內(nèi)置的Select相關(guān)系統(tǒng)調(diào)用,性能也同樣非常強(qiáng)悍。
7、支持服務(wù)平滑重啟
當(dāng)需要重啟服務(wù)時(shí)(例如發(fā)布版本),我們不希望正在處理用戶請(qǐng)求的進(jìn)程被立刻終止,更不希望重啟的那一刻導(dǎo)致客戶端通訊失敗。
WorkerMan提供了平滑重啟功能,能夠保障服務(wù)平滑升級(jí),不影響客戶端的使用。
8、支持文件更新檢測(cè)及自動(dòng)加載
在開發(fā)過(guò)程中,我們希望在我們改動(dòng)代碼后能夠立刻生效,以便查看結(jié)果。WorkerMan提供了FileMonitor文件監(jiān)控組件,只要文件有更新,WorkerMan會(huì)自動(dòng)運(yùn)行reload,以便加載新的文件,使之生效。
9、支持以指定用戶運(yùn)行子進(jìn)程
因?yàn)樽舆M(jìn)程是實(shí)際處理用戶請(qǐng)求的進(jìn)程,為了安全考慮,子進(jìn)程不能有太高的權(quán)限,所以WorkerMan支持設(shè)置子運(yùn)行進(jìn)程運(yùn)行的用戶,使你的服務(wù)器更加安全。
10、支持對(duì)象或者資源永久保持
WorkerMan在運(yùn)行過(guò)程中只會(huì)載入解析一次PHP文件,然后便常駐內(nèi)存,這使得類及函數(shù)聲明、PHP執(zhí)行環(huán)境、符號(hào)表等不會(huì)重復(fù)創(chuàng)建銷毀,這與Web容器下運(yùn)行的PHP機(jī)制是完全不同的。
在WorkerMan中,一個(gè)進(jìn)程生命周期內(nèi)靜態(tài)成員或者全局變量在不主動(dòng)銷毀的情況下是永久保持的,也就是將對(duì)象或者連接等資源放到全局變量或者類靜態(tài)成員中則當(dāng)前進(jìn)程的整個(gè)生命周期內(nèi)的所有請(qǐng)求都可以復(fù)用。
例如只要單個(gè)進(jìn)程內(nèi)初始化一次數(shù)據(jù)庫(kù)連接,則以后這個(gè)進(jìn)程的所有請(qǐng)求都可以復(fù)用這個(gè)數(shù)據(jù)庫(kù)連接,避免了頻繁連接數(shù)據(jù)庫(kù)過(guò)程中TCP三次握手、 數(shù)據(jù)庫(kù)權(quán)限驗(yàn)證、斷開連接時(shí)TCP四次握手的過(guò)程,極大的提高了應(yīng)用程序效率。
11、高性能
由于php文件從磁盤讀取解析一次后便會(huì)常駐內(nèi)存,下次使用時(shí)直接使用內(nèi)存中的opcode, 極大的減少了磁盤IO及PHP中請(qǐng)求初始化、創(chuàng)建執(zhí)行環(huán)境、詞法解析、語(yǔ)法解析、編譯opcode、請(qǐng)求關(guān)閉等諸多耗時(shí)過(guò)程, 并且不依賴nginx、apache等容器,少了nginx等容器與PHP通信的開銷,最主要的是資源可以永久保持,不必每次初始化數(shù)據(jù)庫(kù)連接等等, 所以使用WorkerMan開發(fā)應(yīng)用程序,性能非常高。
12、支持HHVM
支持在HHVM虛擬機(jī)上運(yùn)行,可成倍提升PHP性能。尤其是在cpu密集運(yùn)算業(yè)務(wù)中,性能非常優(yōu)異。通過(guò)實(shí)際壓力測(cè)試對(duì)比,在沒(méi)有負(fù)載業(yè)務(wù)的情況下,WorkerMan在HHVM下運(yùn)行比在Zend PHP5.6運(yùn)行網(wǎng)絡(luò)吞吐量提高了30-80%左右
參考文檔
http://doc.workerman.net/principle.html
原文鏈接:https://blog.csdn.net/u012164509/article/details/90749646
更多workerman知識(shí)請(qǐng)關(guān)注PHP中文網(wǎng)workerman框架教程欄目。
以上是WorkerMan的特性介紹的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)

實(shí)現(xiàn)Workerman文檔中的文件上傳與下載,需要具體代碼示例引言:Workerman是一款高性能的PHP異步網(wǎng)絡(luò)通訊框架,具備簡(jiǎn)潔、高效、易用等特點(diǎn)。在實(shí)際開發(fā)中,文件上傳和下載是常見(jiàn)的功能需求,本文將介紹如何使用Workerman框架實(shí)現(xiàn)文件的上傳和下載,并給出具體的代碼示例。一、文件上傳:文件上傳是指將本地計(jì)算機(jī)上的文件傳輸至服務(wù)器端的操作。下面是使用

Swoole 和 Workerman 都是高性能 PHP 服務(wù)器框架。Swoole 以其異步處理、出色的性能和可擴(kuò)展性而聞名,適用于需要處理大量并發(fā)請(qǐng)求和高吞吐量的項(xiàng)目。Workerman 提供了異步和同步模式的靈活性,具有直觀的 API,更適合易用性和處理較低并發(fā)量的項(xiàng)目。

如何實(shí)現(xiàn)Workerman文檔的基本使用方法簡(jiǎn)介:Workerman是一個(gè)高性能的PHP開發(fā)框架,它可以幫助開發(fā)者輕松構(gòu)建高并發(fā)的網(wǎng)絡(luò)應(yīng)用程序。本文將介紹Workerman的基本使用方法,包括安裝和配置、創(chuàng)建服務(wù)和監(jiān)聽端口、處理客戶端請(qǐng)求等。并給出相應(yīng)的代碼示例。一、安裝和配置Workerman在命令行中輸入以下命令來(lái)安裝Workerman:c

如何實(shí)現(xiàn)Workerman文檔中的定時(shí)器功能Workerman是一款強(qiáng)大的PHP異步網(wǎng)絡(luò)通信框架,它提供了豐富的功能,其中就包括定時(shí)器功能。使用定時(shí)器可以在指定的時(shí)間間隔內(nèi)執(zhí)行代碼,非常適合定時(shí)任務(wù)、輪詢等應(yīng)用場(chǎng)景。接下來(lái),我將詳細(xì)介紹如何在Workerman中實(shí)現(xiàn)定時(shí)器功能,并提供具體的代碼示例。第一步:安裝Workerman首先,我們需要安裝Worker

Workerman開發(fā):基于UDP協(xié)議的實(shí)時(shí)視頻通話摘要:本文將介紹如何使用Workerman框架實(shí)現(xiàn)基于UDP協(xié)議的實(shí)時(shí)視頻通話功能。我們將深入了解UDP協(xié)議的特點(diǎn),并通過(guò)代碼示例展示如何搭建一個(gè)簡(jiǎn)單但完整的實(shí)時(shí)視頻通話應(yīng)用。引言:在網(wǎng)絡(luò)通信中,實(shí)時(shí)視頻通話是一項(xiàng)非常重要的功能。傳統(tǒng)的TCP協(xié)議在實(shí)現(xiàn)實(shí)時(shí)性較高的視頻通話時(shí),可能會(huì)有傳輸延遲等問(wèn)題。而UDP

如何實(shí)現(xiàn)Workerman文檔中的反向代理功能,需要具體代碼示例簡(jiǎn)介:Workerman是一款高性能的PHP多進(jìn)程網(wǎng)絡(luò)通信框架,提供了豐富的功能和強(qiáng)大的性能,廣泛應(yīng)用于Web實(shí)時(shí)通訊、長(zhǎng)連接服務(wù)等場(chǎng)景。其中,Workerman還支持反向代理功能,可以實(shí)現(xiàn)服務(wù)器對(duì)外提供服務(wù)時(shí)的負(fù)載均衡和靜態(tài)資源緩存等功能。本篇文章將介紹如何使用Workerman實(shí)現(xiàn)反向代理功

如何使用Workerman搭建高可用性負(fù)載均衡系統(tǒng),需要具體代碼示例在現(xiàn)代技術(shù)領(lǐng)域中,隨著互聯(lián)網(wǎng)的快速發(fā)展,越來(lái)越多的網(wǎng)站和應(yīng)用程序需要處理大量的并發(fā)請(qǐng)求。為了實(shí)現(xiàn)高可用性和高性能,負(fù)載均衡系統(tǒng)成為了必不可少的組件之一。本文將介紹如何使用PHP開源框架Workerman搭建一個(gè)高可用性的負(fù)載均衡系統(tǒng),并提供具體的代碼示例。一、Workerman簡(jiǎn)介Worke

Workerman是一款基于PHP開發(fā)的高性能異步事件驅(qū)動(dòng)框架,它可以輕松實(shí)現(xiàn)TCP/UDP協(xié)議下的長(zhǎng)連接開發(fā)。除此之外,Workerman還提供了實(shí)現(xiàn)文件傳輸?shù)墓δ埽梢杂糜诖笪募鬏?、?shù)據(jù)備份等場(chǎng)景。本文將介紹如何在Workerman中實(shí)現(xiàn)文件傳輸功能,并提供具體的代碼示例。一、文件上傳功能實(shí)現(xiàn)文件上傳功能需要客戶端將要上傳的文件發(fā)送給服務(wù)端,服務(wù)端驗(yàn)證
