什么是workerman?


簡介:

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

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

PHP進程管理:類似於操作系統的進程管理。

socket:網絡上的兩個程序通過一個雙向的通信連接實現數據的交換,這個連接的一端稱為一個socket。

 

服務端開發示例WebSocket Server

1、新建文件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();

2、啟動服務:

php start.php start -d

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

3、查看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相關系統調用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM