91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

swoole提高性能的方法

發布時間:2020-12-18 10:43:27 來源:億速云 閱讀:239 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關swoole提高性能的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

Swoole中的網絡請求處理是基于事件的,并且充分利用了底層的epoll / kqueue實現,使得為數百萬個請求提供服務變得非常容易。

Swoole4使用全新的協程內核引擎,現在它擁有一個全職的開發團隊,因此我們正在進入PHP歷史上前所未有的時期,為性能的高速提升提供了獨一無二的可能性。  

協程

Swoole4或更高版本擁有高可用性的內置協程,您可以使用完全同步的代碼來實現異步性能,PHP代碼沒有任何額外的關鍵字,底層會自動進行協程調度。

開發者可以將協程理解為超輕量級的線程, 你可以非常容易地在一個進程中創建成千上萬個協程。

并發1萬個請求從MySQL讀取海量數據僅需要0.2秒

$s = microtime(true);
Co\run(function() {
    for ($c = 100; $c--;) {
        go(function () {
            $mysql = new Swoole\Coroutine\MySQL;
            $mysql->connect([
                'host' => '127.0.0.1',
                'user' => 'root',
                'password' => 'root',
                'database' => 'test'
            ]);
            $statement = $mysql->prepare('SELECT * FROM `user`');
            for ($n = 100; $n--;) {
                $result = $statement->execute();
                assert(count($result) > 0);
            }
        });
    }
});
echo 'use ' . (microtime(true) - $s) . ' s';

混合服務器

你可以在一個事件循環上創建多個服務:TCP,HTTP,Websocket和HTTP2,并且能輕松承載上萬請求。

function tcp_pack(string $data): string
{
    return pack('N', strlen($data)) . $data;
}
function tcp_unpack(string $data): string
{
    return substr($data, 4, unpack('N', substr($data, 0, 4))[1]);
}
$tcp_options = [
    'open_length_check' => true,
    'package_length_type' => 'N',
    'package_length_offset' => 0,
    'package_body_offset' => 4
];
---------------------------------------------------------------------------------------------------------------
$server = new Swoole\WebSocket\Server('127.0.0.1', 9501, SWOOLE_BASE);
$server->set(['open_http2_protocol' => true]);
// http && http2
$server->on('request', function (Swoole\Http\Request $request, Swoole\Http\Response $response) {
    $response->end('Hello ' . $request->rawcontent());
});
// websocket
$server->on('message', function (Swoole\WebSocket\Server $server, Swoole\WebSocket\Frame $frame) {
    $server->push($frame->fd, 'Hello ' . $frame->data);
});
// tcp
$tcp_server = $server->listen('127.0.0.1', 9502, SWOOLE_TCP);
$tcp_server->set($tcp_options);
$tcp_server->on('receive', function (Swoole\Server $server, int $fd, int $reactor_id, string $data) {
    $server->send($fd, tcp_pack('Hello ' . tcp_unpack($data)));
});
$server->start();

關于swoole提高性能的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴化市| 广德县| 泰和县| 栾川县| 延边| 法库县| 土默特右旗| 莒南县| 普陀区| 通州市| 略阳县| 吉首市| 松江区| 鹤壁市| 正宁县| 洪洞县| 孝感市| 瓮安县| 塘沽区| 綦江县| 班玛县| 张掖市| 肃北| 呼伦贝尔市| 伊通| 稻城县| 静宁县| 吉木萨尔县| 靖宇县| 托克逊县| 桃园县| 澄城县| 双流县| 九江县| 藁城市| 玉溪市| 泌阳县| 鸡泽县| 红原县| 临汾市| 犍为县|