workerman介紹(附使用方法)

下面由workerman教程欄目給大家介紹workerman的概念及使用方法,希望對(duì)需要的朋友有所幫助!

workerman介紹(附使用方法)

workerman是一個(gè)高性能的PHP socket 服務(wù)器框架,workerman基于PHP多進(jìn)程以及l(fā)ibevent事件輪詢庫(kù),PHP開(kāi)發(fā)者只要實(shí)現(xiàn)一兩個(gè)接口,便可以開(kāi)發(fā)出自己的網(wǎng)絡(luò)應(yīng)用,例如Rpc服務(wù)、聊天室服務(wù)器、手機(jī)游戲服務(wù)器等。

workerman的目標(biāo)是讓PHP開(kāi)發(fā)者更容易的開(kāi)發(fā)出基于socket的高性能的應(yīng)用服務(wù),而不用去了解PHP socket以及PHP多進(jìn)程細(xì)節(jié)。

?workerman本身是一個(gè)PHP多進(jìn)程服務(wù)器框架,具有PHP進(jìn)程管理以及socket通信的模塊,所以不依賴php-fpm、nginx或者apache等這些容器便可以獨(dú)立運(yùn)行。

PHP進(jìn)程管理:類似于操作系統(tǒng)的進(jìn)程管理。

socket:網(wǎng)絡(luò)上的兩個(gè)程序通過(guò)一個(gè)雙向的通信連接實(shí)現(xiàn)數(shù)據(jù)的交換,這個(gè)連接的一端稱為一個(gè)socket。

服務(wù)端開(kāi)發(fā)示例WebSocket Server

1、新建文件start.php

<?php use WorkermanWorker; require_once './Workerman/Autoloader.php';  // 創(chuàng)建一個(gè)Worker監(jiān)聽(tīng)2346端口,使用websocket協(xié)議通訊 $ws_worker = new Worker("websocket://0.0.0.0:2346");  // 啟動(dòng)4個(gè)進(jìn)程對(duì)外提供服務(wù) $ws_worker->count = 4;  // 當(dāng)收到客戶端發(fā)來(lái)的數(shù)據(jù)后返回hello $data給客戶端 $ws_worker->onMessage = function($connection, $data) {     // 向客戶端發(fā)送hello $data     $connection->send('hello ' . $data); };  // 運(yùn)行 Worker::runAll();

2、啟動(dòng)服務(wù):

php start.php start -d

使用以上的語(yǔ)句啟動(dòng)start.php ? ,創(chuàng)建一個(gè)Worker監(jiān)聽(tīng)2346端口,使用websocket協(xié)議通訊并且啟動(dòng)四個(gè)進(jìn)程對(duì)外服務(wù),當(dāng)收到請(qǐng)求時(shí)會(huì)傳送數(shù)據(jù)給客戶端。

3、查看workerman運(yùn)行狀態(tài):

php start.php status

workerman介紹(附使用方法)

wokerman 的幾大特性:

純PHP開(kāi)發(fā)

workerman完全使用PHP開(kāi)發(fā),使用workerman開(kāi)發(fā)的應(yīng)用程序不依賴php-fpm、apache、nginx這些容器就可以獨(dú)立運(yùn)行。 這使得PHP開(kāi)發(fā)者開(kāi)發(fā)、部署、調(diào)試應(yīng)用程序非常方便。

支持PHP多進(jìn)程

為了充分發(fā)揮服務(wù)器多CPU的性能,workerman默認(rèn)支持多進(jìn)程多任務(wù)。workerman開(kāi)啟一個(gè)主進(jìn)程和多個(gè)子進(jìn)程對(duì)外提供服務(wù), 主進(jìn)程負(fù)責(zé)監(jiān)控子進(jìn)程退出信號(hào),并負(fù)責(zé)生成新的子進(jìn)程去處理服務(wù),這樣做不僅提高了應(yīng)用程序的性能,而且使得workerman更加穩(wěn)定。

支持TCP、UDP

workerman支持TCP和UDP兩種傳輸層協(xié)議,只需要更改配置的一個(gè)字段,便可以更換傳輸層協(xié)議,業(yè)務(wù)代碼無(wú)需任何改動(dòng)。

支持長(zhǎng)連接

很多時(shí)候需要PHP應(yīng)用程序要與客戶端保持長(zhǎng)連接,比如聊天室、游戲等,但是傳統(tǒng)的PHP容器(apache、nginx、php-fpm)很難做到這一點(diǎn)。 使用workerman可以輕松使用PHP長(zhǎng)連接。php單個(gè)進(jìn)程可以支持幾千甚至幾萬(wàn)的并發(fā)連接,多進(jìn)程則可支持?jǐn)?shù)十萬(wàn)甚至上百萬(wàn)的并發(fā)連接。

支持各種應(yīng)用層協(xié)議

接口上支持各種應(yīng)用層協(xié)議,包括自定義協(xié)議。Workerman默認(rèn)支持的協(xié)議有HTTP、WebSocket、以及簡(jiǎn)單的Text文本協(xié)議。 同時(shí)Workerman提供了通用的協(xié)議接口,開(kāi)發(fā)者基于此接口便可以方便的開(kāi)發(fā)出自己的協(xié)議。

支持高并發(fā)

workerman支持Libevent事件輪詢庫(kù)(需要安裝Libevent擴(kuò)展), 使用Libevent在高并發(fā)時(shí)性能非常卓越,如果沒(méi)有安裝Libevent則使用PHP內(nèi)置的Select相關(guān)系統(tǒng)調(diào)用。

更多workerman知識(shí)請(qǐng)關(guān)注workerman教程欄目。

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊5 分享
站長(zhǎng)的頭像-小浪學(xué)習(xí)網(wǎng)月度會(huì)員