什麼是workerman?

簡介:php

workerman是一個高性能的PHP socket 服務器框架,workerman基於PHP多進程以及libevent事件輪詢庫,PHP開發者只要實現一兩個接口,即可以開發出本身的網絡應用,例如Rpc服務、聊天室服務器、手機遊戲服務器等。nginx

workerman的目標是讓PHP開發者更容易的開發出基於socket的高性能的應用服務,而不用去了解PHP socket以及PHP多進程細節。 workerman自己是一個PHP多進程服務器框架,具備PHP進程管理以及socket通訊的模塊,因此不依賴php-fpm、nginx或者apache等這些容器即可以獨立運行。web

PHP進程管理:相似於操做系統的進程管理。apache

socket:網絡上的兩個程序經過一個雙向的通訊鏈接實現數據的交換,這個鏈接的一端稱爲一個socket。服務器

 

服務端開發示例WebSocket Serverwebsocket

一、新建文件start.php

<?php
use Workerman\Worker;
require_once './Workerman/Autoloader.php';

// 建立一個Worker監聽2346端口,使用websocket協議通信
$ws_worker = new Worker("websocket://0.0.0.0:2346");

// 啓動4個進程對外提供服務
$ws_worker->count = 4;

// 當收到客戶端發來的數據後返回hello $data給客戶端
$ws_worker->onMessage = function($connection, $data)
{
    // 向客戶端發送hello $data
    $connection->send('hello ' . $data);
};

// 運行
Worker::runAll();

二、啓動服務:

php start.php start -d

使用以上的語句啓動start.php   ,建立一個Worker監聽2346端口,使用websocket協議通信而且啓動四個進程對外服務,當收到請求時會傳送數據給客戶端。網絡

三、查看workerman運行狀態:

php start.php status

wokerman 的幾大特性:併發

純PHP開發
workerman徹底使用PHP開發,使用workerman開發的應用程序不依賴php-fpm、apache、nginx這些容器就能夠獨立運行。 這使得PHP開發者開發、部署、調試應用程序很是方便。

支持PHP多進程
爲了充分發揮服務器多CPU的性能,workerman默認支持多進程多任務。workerman開啓一個主進程和多個子進程對外提供服務, 主進程負責監控子進程退出信號,並負責生成新的子進程去處理服務,這樣作不只提升了應用程序的性能,並且使得workerman更加穩定。

支持TCP、UDP
workerman支持TCP和UDP兩種傳輸層協議,只須要更改配置的一個字段,即可以更換傳輸層協議,業務代碼無需任何改動。

支持長鏈接
不少時候須要PHP應用程序要與客戶端保持長鏈接,好比聊天室、遊戲等,可是傳統的PHP容器(apache、nginx、php-fpm)很難作到這一點。 使用workerman能夠輕鬆使用PHP長鏈接。php單個進程能夠支持幾千甚至幾萬的併發鏈接,多進程則可支持數十萬甚至上百萬的併發鏈接。

支持各類應用層協議
接口上支持各類應用層協議,包括自定義協議。Workerman默認支持的協議有HTTP、WebSocket、以及簡單的Text文本協議。 同時Workerman提供了通用的協議接口,開發者基於此接口即可以方便的開發出本身的協議。

支持高併發
workerman支持Libevent事件輪詢庫(須要安裝Libevent擴展), 使用Libevent在高併發時性能很是卓越,若是沒有安裝Libevent則使用PHP內置的Select相關係統調用。
框架

相關文章
相關標籤/搜索