av手机免费在线观看,国产女人在线视频,国产xxxx免费,捆绑调教一二三区,97影院最新理论片,色之久久综合,国产精品日韩欧美一区二区三区

php語(yǔ)言

php中的socket框架性能分析

時(shí)間:2025-03-31 09:54:04 php語(yǔ)言 我要投稿
  • 相關(guān)推薦

php中的socket框架性能分析

  在php中的socket框架中,Workerman是什么?以下百分網(wǎng)小編整理的關(guān)于php中的socket框架性能分析,希望對(duì)大家有所幫助,更多信息請(qǐng)關(guān)注應(yīng)屆畢業(yè)生網(wǎng)!

  workerman-chatorkerman是一款純PHP開(kāi)發(fā)的開(kāi)源高性能的PHP socket 服務(wù)器框架。被廣泛的用于手機(jī)app、手游服務(wù)端、網(wǎng)絡(luò)游戲服務(wù)器、聊天室服務(wù)器、硬件通訊服務(wù)器、智能家居、車(chē)聯(lián)網(wǎng)、物聯(lián)網(wǎng)等領(lǐng)域的開(kāi)發(fā)。 支持TCP長(zhǎng)連接,支持Websocket、HTTP等協(xié)議,支持自定義協(xié)議;趙orkerman開(kāi)發(fā)者可以更專(zhuān)注于業(yè)務(wù)邏輯開(kāi)發(fā),不必再為PHP Socket底層開(kāi)發(fā)而煩惱。

  workerman

  workerman是一個(gè)高性能的PHP socket 服務(wù)器框架,workerman基于PHP多進(jìn)程以及l(fā)ibevent事件輪詢(xún)庫(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通信的模塊,所以不依賴(lài)php-fpm、nginx或者apache等這些容器便可以獨(dú)立運(yùn)行。

  特性

  支持HHVM

  使用PHP開(kāi)發(fā)

  支持PHP多進(jìn)程/多線(xiàn)程(多線(xiàn)程版本)

  標(biāo)準(zhǔn)輸入輸出重定向

  支持毫秒定時(shí)器

  支持基于事件的異步編程

  守護(hù)進(jìn)程化

  支持TCP/UDP

  支持多端口監(jiān)聽(tīng)

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

  支持libevent事件輪詢(xún)庫(kù),支持高并發(fā)

  支持服務(wù)平滑重啟

  支持PHP文件更新檢測(cè)及自動(dòng)加載

  支持PHP長(zhǎng)連接

  支持以指定用戶(hù)運(yùn)行子進(jìn)程

  支持telnet遠(yuǎn)程控制

  高性能

  安裝

  下載后解壓即可

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

  1、新建文件start.php

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

  2、啟動(dòng)服務(wù)類(lèi)似下圖:

  3、查看workerman運(yùn)行狀態(tài)類(lèi)似如下界面:
php start.php status

  性能

  測(cè)試環(huán)境:

  系統(tǒng):ubuntu 12.04 LTS 64位

  內(nèi)存:8G

  cpu:Intel® Core™ i3-3220 CPU @ 3.30GHz × 4

<span class="preprocessor">&lt;?php</span>
<span class="keyword">use</span> Workerman\Worker;
<span class="variable">$worker </span>= <span class="keyword">new</span> Worker(<span class="string">'tcp://0.0.0.0:1234'</span>);
<span class="variable">$worker</span>-&gt;count=<span class="number">3</span>;
<span class="variable">$worker</span>-&gt;onMessage = <span class="function"><span class="keyword">function</span><span class="params">(</span></span><span class="function"><span class="params"><span class="variable">$connection</span></span></span><span class="function"><span class="params">, </span></span><span class="function"><span class="params"><span class="variable">$data</span></span></span><span class="function"><span class="params">)</span>
{</span>
    <span class="comment">// 長(zhǎng)連接</span>
    <span class="variable">$connection</span>-&gt;send(<span class="string">"HTTP/1.1 200 OK\r\nConnection: keep-alive\r\nServer: workerman\1.1.4\r\n\r\nhello"</span>);
    <span class="comment">// 短連接</span>
    <span class="comment">//$connection-&gt;close("HTTP/1.1 200 OK\r\nServer: workerman\1.1.4\r\n\r\nhello");</span>
};
Worker::runAll(

  業(yè)務(wù)邏輯

  EchoServer

  結(jié)果

  短鏈接(每次請(qǐng)求完成后關(guān)閉鏈接,下次請(qǐng)求建立新的鏈接):

  條件: 壓測(cè)腳本開(kāi)500個(gè)線(xiàn)程,每個(gè)線(xiàn)程鏈接Workerman 10W次,每次鏈接發(fā)送1個(gè)請(qǐng)求

  結(jié)果: 吞吐量:3W/S , cpu:60% , 內(nèi)存占用:4*8M = 32M

  長(zhǎng)鏈接(每次請(qǐng)求后不關(guān)閉鏈接,下次請(qǐng)求繼續(xù)復(fù)用這個(gè)鏈接):

  條件: 壓測(cè)腳本開(kāi)1000個(gè)線(xiàn)程,每個(gè)線(xiàn)程鏈接Workerman 1次,每個(gè)鏈接發(fā)送10W請(qǐng)求

  結(jié)果: 吞吐量:15.6W/S , cpu:68% , 內(nèi)存占用:4*8M = 32M

  無(wú)流量抖動(dòng),無(wú)內(nèi)存泄漏,性能非常強(qiáng)悍

【php中的socket框架性能分析】相關(guān)文章:

php中file-get-contents與curl性能分析02-28

PHP前端開(kāi)發(fā)中的性能05-25

分析PHP性能調(diào)優(yōu)實(shí)戰(zhàn)01-11

PHP socket的配置及實(shí)例03-21

php常見(jiàn)的框架及優(yōu)缺點(diǎn)分析04-11

PHP Socket編程過(guò)程07-19

php中file-get-contents與curl性能比較分析05-21

php的file-get-contents與curl性能分析02-18

PHP框架的概念07-11