Prefácio
Workerman, um contêiner de aplicação PHP de alto desempenho
O que é Workerman?
Workerman é um contêiner de aplicação PHP de alto desempenho, desenvolvido em PHP puro e de código aberto.
Workerman não é uma reinvenção da roda, não é um framework MVC, mas sim um framework de serviço de nível mais baixo e mais genérico. Com ele, você pode desenvolver proxies TCP, proxies de túnel, servidores de jogos, servidores de e-mail, servidores FTP, e até mesmo desenvolver uma versão PHP do redis, uma versão PHP de banco de dados, uma versão PHP do nginx, uma versão PHP do php-fpm, entre outros. Workerman pode ser considerado uma inovação no campo do PHP que liberou os desenvolvedores das limitações do PHP, que era considerado apto apenas para desenvolvimento web.
Na verdade, Workerman é semelhante a uma versão PHP do nginx, com a mesma base de multi-processos + Epoll + IO não bloqueante. Cada processo do Workerman pode manter milhares de conexões simultâneas. Devido à sua natureza de permanecer na memória, não depende de contêineres como Apache, nginx ou php-fpm, possuindo um desempenho excepcional. Suporta TCP, UDP, UNIXSOCKET, conexões de longo prazo, WebSocket, HTTP, WSS, HTTPS e vários protocolos de comunicação personalizados. Inclui muitos componentes de alto desempenho, como timers, clientes socket assíncronos, Redis assíncrono, HTTP assíncrono, filas de mensagens assíncronas, entre outros.
Algumas direções de aplicação do Workerman
Diferente dos tradicionais frameworks MVC, Workerman não é apenas adequado para desenvolvimento web, mas também tem vastas áreas de aplicação, como comunicação instantânea, IoT, jogos, governança de serviços, servidores ou middleware, o que sem dúvida amplia significativamente a visão dos desenvolvedores PHP. Atualmente, há uma escassez de desenvolvedores PHP nessas áreas. Se você deseja possuir uma vantagem técnica no campo do PHP, não se contentando apenas com tarefas simples de CRUD, ou quer se desenvolver na direção de arquiteto ou especialista, Workerman é um framework que vale a pena aprender. Recomenda-se que os desenvolvedores não apenas usem o Workerman, mas também consigam desenvolver seus próprios projetos de código aberto com base nele, melhorando suas habilidades e aumentando sua influência, como o Beanbun, um framework de web scraping multiprocessado, que já recebeu diversas críticas positivas pouco após seu lançamento.
Algumas direções de aplicação do Workerman incluem:
-
Comunicação instantânea
Como chat ao vivo na web, push de mensagens instantâneas, mini-programas de WeChat, push de mensagens de apps móveis, push de mensagens de software de PC, entre outros.
[Exemplo workerman-chat sala de chat, web push de mensagens, sala de chat do pequenos girinos] -
Internet das Coisas
Como comunicação entre Workerman e impressoras, comunicação com microcontroladores, pulseiras inteligentes, casas inteligentes, bicicletas compartilhadas, entre outros.
[Casos de clientes como 易联云, 易泊时代, etc.] -
Servidores de jogos
Como jogos de cartas, MMORPGs, etc.
[Exemplo browserquest-php] -
Serviços HTTP
Como escrever interfaces HTTP de alto desempenho e sites de alto desempenho. Se você deseja criar serviços ou sites relacionados a HTTP, recomendo fortemente o webman. -
Serviços SOA
Usando Workerman para encapsular diferentes unidades funcionais de negócios existentes e fornecer uma interface unificada em forma de serviço, alcançando desacoplamento do sistema, fácil manutenção, alta disponibilidade e escalabilidade.
[Exemplo workerman-json-rpc, workerman-thrift] -
Outros softwares de servidor
Como GatewayWorker, PHPSocket.IO, proxy HTTP, proxy socks5, componente de comunicação distribuída, componente de compartilhamento de variável distribuída, fila de mensagens, servidores DNS, WebServer, servidores CDN, servidores FTP, etc. -
Componentes
Como redis assíncrono, cliente http assíncrono, cliente mqtt para IoT](components/workerman-mqtt.html), fila de mensagens workerman/redis-queue, workerman/stomp, workerman/rabbitmq, componente de monitoramento de arquivos, e muitos outros componentes de terceiros.
É evidente que os frameworks MVC tradicionais têm dificuldade em implementar essas funcionalidades, razão pela qual Workerman foi criado.
Filosofia do Workerman
Minimalismo, estabilidade, alto desempenho, distribuição.
Minimalismo
Menos é mais. O núcleo do Workerman é extremamente simples, consistindo em apenas alguns arquivos PHP e expondo apenas algumas interfaces, tornando o aprendizado muito fácil. Todas as outras funcionalidades são ampliadas através de componentes.
Workerman possui uma documentação completa, uma homepage autoritativa, uma comunidade ativa, vários grupos no QQ com milhares de membros, uma grande quantidade de componentes de alto desempenho e inúmeros exemplos, tudo isso torna a experiência do desenvolvedor muito mais fluida.
Estabilidade
Workerman é um projeto de código aberto há vários anos e é amplamente utilizado por muitas empresas listadas, sendo extremamente estável. Alguns serviços não foram reiniciados há mais de dois anos e ainda funcionam rapidamente, sem core dumps, vazamentos de memória ou bugs.
Alto desempenho
Devido ao fato de o Workerman permanecer na memória, ele não depende do apache/nginx/php-fpm, eliminando o custo de comunicação entre contêineres e PHP, além de não ter o custo de inicializar e destruir tudo a cada requisição, resultando em um desempenho excepcional. Comparado aos frameworks MVC tradicionais, seu desempenho é várias vezes superior, e sob testes de pressão com o PHP 7, o QPS pode até ser superior ao de um nginx isolado.
Distribuição
Não estamos mais na era do trabalho solitário. Mesmo o servidor mais poderoso tem limites. A implantação distribuída em várias máquinas é a solução ideal. O Workerman oferece uma solução de comunicação distribuída de longo prazo GatewayWorker framework, onde adicionar servidores requer apenas uma configuração simples e então é iniciado, sem mudanças no código de negócio, aumentando exponencialmente a capacidade do sistema. Se você está desenvolvendo uma aplicação TCP de longa conexão, recomendo usar diretamente o GatewayWorker, que é um wrapper para o Workerman, oferecendo interfaces mais ricas e uma capacidade de processamento distribuído mais robusta para aplicações de longa conexão.
O escopo deste manual
Versões Workerman 3.x - 5.x
Usuários do Windows (leitura obrigatória)
Workerman suporta tanto sistemas Linux quanto Windows. A versão do Workerman para Windows não depende de nenhuma extensão, apenas precisa que a variável de ambiente do PHP esteja configurada corretamente. Para instalação e recomendações sobre a versão do Workerman para Windows, consulte leitura obrigatória para usuários do Windows.
Cliente
O protocolo de comunicação do Workerman é aberto e personalizável, portanto, teoricamente, o Workerman pode se comunicar com clientes de qualquer plataforma que utilize quaisquer protocolos. Quando os usuários desenvolvem clientes, podem completar a comunicação com o servidor de acordo com o protocolo de comunicação correspondente.