Usando Swoole para criar aplicativos PHP de alto desempenho
O que é Swoole?
Swoole é um framework de comunicação de rede de alto desempenho para PHP, que oferece funcionalidades como assíncrono, multithreading e corrotinas, permitindo que o PHP lide com tarefas de alta concorrência como o Node.js. Ele suporta vários protocolos, incluindo TCP, UDP, UnixSocket, HTTP e WebSocket, sendo adequado para construir servidores web de alto desempenho, arquiteturas de microsserviços, sistemas de comunicação em tempo real e muito mais.
Principais características e vantagens do Swoole
- Alto desempenho: Swoole é escrito em C, oferecendo desempenho extremamente alto, com suporte a IO assíncrono e corrotinas, capaz de lidar com solicitações de alta concorrência.
- Funcionalidade rica: Suporta vários protocolos de rede, temporizadores, gerenciamento de processos, gerenciamento de memória e muito mais para atender à diferentes necessidades de desenvolvimento.
- Fácil de usar: Fornece APIs simples e documentação rica, ajudando os desenvolvedores a começarem rapidamente.
- Alta extensibilidade: Suporta extensões e plugins personalizados, permitindo flexibilidade na personalização conforme necessário.
Swoole é a escolha ideal para construir aplicativos web de alto desempenho e sistemas de comunicação em tempo real, adequado para projetos que vão de pequenas aplicações a grandes sistemas empresariais.
Instalando Swoole
Neste artigo, vamos introduzir como instalar e usar o Swoole no ambiente ServBay.
TIP
ServBay recomenda que os desenvolvedores coloquem o site no diretório /Applications/ServBay/www
para facilitar o gerenciamento.
Passo 1: Instalar a extensão Swoole
Ativar a extensão Swoole
O ServBay já vem com a extensão Swoole embutida, os usuários precisam ativá-la e reiniciar o PHP. Consulte Como ativar o módulo Swoole embutido do ServBay para ativar o módulo Swoole.
Passo 2: Criar diretório do projeto
Crie e acesse o diretório do projeto:
cd /Applications/ServBay/www
mkdir servbay-swoole-app
cd servbay-swoole-app
2
3
Passo 3: Criar o script do servidor Swoole
No diretório do projeto, crie um arquivo server.php
e escreva um servidor HTTP Swoole simples:
<?php
use Swoole\Http\Server;
use Swoole\Http\Request;
use Swoole\Http\Response;
$server = new Server("0.0.0.0", 9501);
$server->on("start", function (Server $server) {
echo "Swoole HTTP server is started at http://0.0.0.0:9501\n";
});
$server->on("request", function (Request $request, Response $response) {
$response->header("Content-Type", "text/plain");
$response->end("Hello ServBay!");
});
$server->start();
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Passo 4: Executar o servidor Swoole
No terminal, execute o seguinte comando para iniciar o servidor Swoole:
php server.php
Você verá a seguinte saída:
Swoole HTTP server is started at http://0.0.0.0:9501
Passo 5: Acessar o servidor Swoole
Abra o navegador e acesse http://localhost:9501
, você verá a página exibindo Hello ServBay!
.
Usando Swoole para manipular conexões WebSocket
Swoole também suporta protocolo WebSocket, que pode ser usado para construir aplicativos de comunicação em tempo real. Vamos mostrar como usar o Swoole para tratar conexões WebSocket.
Criar o script do servidor WebSocket
No diretório do projeto, crie um arquivo websocket_server.php
e escreva um servidor WebSocket simples:
<?php
use Swoole\WebSocket\Server;
use Swoole\Http\Request;
use Swoole\WebSocket\Frame;
$server = new Server("0.0.0.0", 9502);
$server->on("start", function (Server $server) {
echo "Swoole WebSocket server is started at ws://0.0.0.0:9502\n";
});
$server->on("open", function (Server $server, Request $request) {
echo "connection open: {$request->fd}\n";
});
$server->on("message", function (Server $server, Frame $frame) {
echo "received message: {$frame->data}\n";
$server->push($frame->fd, "Hello, {$frame->data}");
});
$server->on("close", function ($ser, $fd) {
echo "connection close: {$fd}\n";
});
$server->start();
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Executar o servidor WebSocket
No terminal, execute o seguinte comando para iniciar o servidor WebSocket:
php websocket_server.php
Você verá a seguinte saída:
Swoole WebSocket server is started at ws://0.0.0.0:9502
Conectar ao servidor WebSocket
Você pode usar um cliente WebSocket no navegador ou outras ferramentas clientes WebSocket (como wscat
) para conectar-se ao servidor WebSocket.
Conectar usando wscat
Instale
wscat
:bashnpm install -g wscat
1Conecte-se ao servidor WebSocket:
bashwscat -c ws://localhost:9502
1Envie uma mensagem:
bash> Hello ServBay
1
Você verá a mensagem de retorno do servidor:
< Hello, Hello ServBay
Com os passos acima, você criou e executou com sucesso um projeto Swoole, usando as funcionalidades fornecidas pelo Swoole para tratar solicitações HTTP e conexões WebSocket. O alto desempenho e as funcionalidades ricas do Swoole o tornam uma escolha ideal para construir aplicações de alta concorrência.