???? ??? ?? ??? ???? ??? ?? ????? ??? ???? ????. Swoole? PHP ??? ???? ??? ??? ???? ?? ???? ???? ??? ???? ????? ???? ? ?? ??? ?? ???? ?? ???? ????.
???? Swoole? ???? ??? ???? ??? ????? ??? ?? ???? ????, Swoole? ?? ? ??? ?? ???? ??? ?? ?? ?? ?? ??? ???????.
1. Swoole ??
Swoole ??? ?? ?????. PHP ?? ?? ??? PECL? ???? ???. ???? ??? ??? ????.
$ pecl install swoole
??? ??? ? php.ini ??? ???? ?? ?? ??? ? swoole ??? ??????.
extension=swoole.so
2. ??? HTTP ?? ??
??? Swoole? ?? ???? ??? ? ??? ??? HTTP ??? ??? ?????.
<?php $http = new swoole_http_server("127.0.0.1", 9501); $http->on('request', function ($request, $response) { $response->header("Content-Type", "text/html; charset=utf-8"); $response->end("<h1>Hello Swoole!</h1>"); }); $http->start();
????? ?? ??? ???? HTTP ??? ??? ? ????.
$ php server.php
?? ?? ?????? http://127.0.0.1:9501
? ???? ??? ?????. ????? Swoole!
. http://127.0.0.1:9501
即可看到輸出的 Hello Swoole!
。
三、利用WebSocket實現實時通信
Swoole還支持使用WebSocket協議實現實時通信。下面我們將編寫一個簡單的聊天室應用,供大家了解Swoole的實時通信功能。
<?php $ws = new swoole_websocket_server("127.0.0.1", 9502); $ws->on('open', function ($ws, $request) { echo "client-{$request->fd} is connected "; }); $ws->on('message', function ($ws, $frame) { echo "received message: {$frame->data} "; foreach($ws->connections as $fd) { $ws->push($fd, $frame->data); } }); $ws->on('close', function ($ws, $fd) { echo "client-{$fd} is closed "; }); $ws->start();
我們可以在終端中執(zhí)行以下命令,啟動WebSocket服務器:
$ php chatroom.php
然后,在瀏覽器中訪問 http://localhost:8080
,打開JavaScript控制臺,執(zhí)行以下代碼:
let ws = new WebSocket('ws://127.0.0.1:9502'); ws.onopen = function() { console.log('WebSocket is connected.'); }; ws.onmessage = function(event) { console.log(`received message: ${event.data}`); }; ws.onclose = function() { console.log('WebSocket is closed.'); }; ws.send('hello world');
此時,我們就可以在JavaScript控制臺中看到收到了服務端發(fā)送的消息。在瀏覽器中打開多個標簽頁,我們就可以看到一個簡單的聊天室效果。
四、利用協程提高并發(fā)能力
Swoole支持利用協程提高并發(fā)處理能力。下面我們將編寫一個簡單的協程應用,供大家了解Swoole的協程功能。
<?php Coun(function() { $result1 = Co::exec('ls'); $result2 = Co::exec('pwd'); $result3 = Co::exec('date'); echo "result1: {$result1[0]} "; echo "result2: {$result2[0]} "; echo "result3: {$result3[0]} "; });
我們可以在終端中執(zhí)行以下命令,運行協程應用:
$ php coroutine.php
此時,我們可以看到執(zhí)行結果,分別對應了執(zhí)行 ls
、pwd
和 date
http://localhost:8080
? ???? JavaScript ??? ?? ??? ?????. ?? ??? ??rrreee??? ???? ???? ?? ???? ???? ?? JavaScript ???? ??? ? ????. ?????? ?? ?? ?? ??? ??? ??? ? ? ????. ????4. ???? ???? ??? ?? ??????Swoole? ??? ?? ??? ????? ?? ??? ??? ?????. ????? ?? ??? Swoole? ??? ??? ??? ? ??? ??? ??? ??????? ???????. ??rrreee????? ??????? ???? ?? ????? ?? ??? ??? ? ????. ??rrreee???? ls
? ? ??? ???? ?? ??? ? ? ????. pwd
? date
?? ??. ????? ??? Swoole? ?? ?? ?????. ??? ??? ?? HTTP, WebSocket, Coroutine ? Swoole? ?? ?? ???? ?????. ??? ??? ?? ??? Swoole? ?? ???? ??? ??? ???? ??? ??? ? ??? ????. ?? ?? ????? ? ??? ??? ? ??? ?? ????? ??? ? ???, ?? ???? ???? ??? ??? ?????. ??? ??? Swoole? ???? ??? ???? ??? ???? ??? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

Laravel?? Swoole ???? ???? ?? ?? ??? ??? ??? ? ????. ??? ??? ????. ?? ??: ?? ??? ??? ??? ? ????. ???: Linux epoll ??? ????? ???? ??? ????? ?????. ?? ??? ??: ? ?? ?? ???? ?????. ??? ??: Laravel ?????? ???? ???? ??? ?????.

Swoole? Workerman? ?? ??? PHP ?? ????????. ??? ??, ??? ?? ? ????? ? ??? Swoole? ?? ?? ?? ??? ?? ???? ???? ?? ????? ?????. Workerman? ?? ???? ?? ??? ??? ???? ????? ? ??? ???? API? ?? ???? ? ??? ??? ???? ?????.

?? ??: ???: Swoole? ??? ???? ??? ???? ? ????. ?? ??: Swoole? ??? ???? ??? ????? ?? ?? ??? ? ????. ??? ??: Swoole? ???? ? ?? ???? ?????. ?? ???: Swoole? ???? ?? ?? ????? API? ?????.

Swoole ???? ?? ????? ?? ??? ?????. ??? ??? ???? PID? ?????. ???? ????? "kill -15 PID"? ??????. ???? ???? ? ??? ?? ??? ??? ???? ???? ?? ?????.

PHP ? WebSocket: ??? ??? ?????? ?? ???? ???? ??? ??? ???? ?? ??? ??????? ?? ? ????? ????. ?? HTTP ?????? ??? ???? ??? ? ?? ???? ?? ?? ??? ???? ? ??? ??? ? ? ?? ?? ??? ????. ? ??? ???? ?? WebSocket? ??????. WebSocket? ??? ?? ??? ???? ?? ?? ?????, ????? ?? ?? ??? ?? ? ??? ?????.

??: ??? Python ????? ?????? ??? ?? ??? ?? ?? ?? ??? ??, ?? ?? ? ?? ???? Python ??? ?? ???? ?? ?? ? ?? ???? ???? ??? Python ????? ??? ?? ??? ???? ????. ??????. ??? ??? ??? ? ?? ?? ?? ??? Python ?????? ??? ?? ????? ????? ???? ?? ??? ????? ???. ? ????? ??? Python ????? ??????? ???? ??? ???? ?? ??? ?????.

Swoole ????? ?? ???? ????? ???? ????? ??? ? ????.

C++? ????? ???? ???? ???? ??? ????? ?????. ?? ??? ??? ?? ??????? C++? ???? ?? ??? ??? ?? ?????. ? ????? ??? ??? ?? ?? ??? ???? ?? C++ ??? ????? ? ?? ??? ?????. ?? ?? ?? STL ???? ?? C++ ??????? ??? ????? ???? ??? ?? ? ?????. ??? ??? ??? ????? ??, ??, ???, ?? ?? ?? STL ????? ???? ?? ? ???? ? ????.
