<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>

            php中的socket框架性能分析

            時間:2025-11-02 05:29:09 php語言 我要投稿

            php中的socket框架性能分析

              在php中的socket框架中,Workerman是什么?以下百分網小編整理的關于php中的socket框架性能分析,希望對大家有所幫助,更多信息請關注應屆畢業生網!

              workerman-chatorkerman是一款純PHP開發的開源高性能的PHP socket 服務器框架。被廣泛的用于手機app、手游服務端、網絡游戲服務器、聊天室服務器、硬件通訊服務器、智能家居、車聯網、物聯網等領域的開發。 支持TCP長連接,支持Websocket、HTTP等協議,支持自定義協議。基于workerman開發者可以更專注于業務邏輯開發,不必再為PHP Socket底層開發而煩惱。

              workerman

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

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

              特性

              支持HHVM

              使用PHP開發

              支持PHP多進程/多線程(多線程版本)

              標準輸入輸出重定向

              支持毫秒定時器

              支持基于事件的異步編程

              守護進程化

              支持TCP/UDP

              支持多端口監聽

              接口上支持各種應用層協議

              支持libevent事件輪詢庫,支持高并發

              支持服務平滑重啟

              支持PHP文件更新檢測及自動加載

              支持PHP長連接

              支持以指定用戶運行子進程

              支持telnet遠程控制

              高性能

              安裝

              下載后解壓即可

              服務端開發示例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">/pic/span>
            <span class="variable">$ws_worker </span>= <span class="keyword">new</span> Worker(<span class="string">"websocket:/pic/span>);
            <span class="comment">/pic/span>
            <span class="variable">$ws_worker</span>-&gt;count = <span class="number">4</span>;
            <span class="comment">/pic/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">/pic/span>
                <span class="variable">$connection</span>-&gt;send(<span class="string">'hello '</span> . <span class="variable">$data</span>);
            };
            <span class="comment">/pic/span>
            Worker::runAll()

              2、啟動服務類似下圖:

              3、查看workerman運行狀態類似如下界面:
            php start.php status

              性能

              測試環境:

              系統:ubuntu 12.04 LTS 64位

              內存: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:/pic/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">/pic/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">/pic/span>
                <span class="comment">/pic/1.1 200 OK\r\nServer: workerman\1.1.4\r\n\r\nhello");</span>
            };
            Worker::runAll(

              業務邏輯

              EchoServer

              結果

              短鏈接(每次請求完成后關閉鏈接,下次請求建立新的鏈接):

              條件: 壓測腳本開500個線程,每個線程鏈接Workerman 10W次,每次鏈接發送1個請求

              結果: 吞吐量:3W/S , cpu:60% , 內存占用:4*8M = 32M

              長鏈接(每次請求后不關閉鏈接,下次請求繼續復用這個鏈接):

              條件: 壓測腳本開1000個線程,每個線程鏈接Workerman 1次,每個鏈接發送10W請求

              結果: 吞吐量:15.6W/S , cpu:68% , 內存占用:4*8M = 32M

              無流量抖動,無內存泄漏,性能非常強悍

            【php中的socket框架性能分析】相關文章:

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

            PHP前端開發中的性能09-15

            分析PHP性能調優實戰01-11

            PHP socket的配置及實例03-21

            PHP Socket編程過程12-20

            php常見的框架及優缺點分析12-08

            php中file-get-contents與curl性能比較分析12-19

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

            PHP框架的概念09-24

            • 相關推薦

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院