# Swoole

# Introdução

Swoole é um mecanismo de comunicação de rede paralelo baseado em eventos assíncronos e corrotinas, escrito em C++, fornecendo corrotinas e suporte de programação de rede de alto desempenho para PHP. Ele fornece vários módulos de servidor e cliente de rede para múltiplos protocolos de comunicação, facilitando a implementação rápida de serviços TCP/UDP, Web de alto desempenho, serviços WebSocket, IoT, comunicação em tempo real, jogos, microsserviços, etc., quebrando os limites do PHP em domínios web tradicionais. Para começar, consulte a » Documentação do Swoole.

> Nota: Esta extensão não está disponível em plataformas Windows.

- Instalação/Configuração
  - Dependências
  - Instalação
  - Configurações em Execução
- Constantes predefinidas
- Funções Swoole
  - swoole_async_dns_lookup — Pesquisa de nome de host para IP assíncrona e não bloqueante
  - swoole_async_read — Lê o fluxo de arquivo de forma assíncrona
  - swoole_async_readfile — Lê um arquivo de forma assíncrona
  - swoole_async_set — Atualiza as opções de E/S assíncronas
  - swoole_async_write — Escreve dados em um fluxo de arquivo de forma assíncrona
  - swoole_async_writefile — Escreve dados em um arquivo de forma assíncrona
  - swoole_clear_error — Limpa os erros no socket ou no último código de erro
  - swoole_client_select — Obtém a descrição do arquivo que está pronto para leitura/gravação ou erro
  - swoole_cpu_num — Obtém o número de CPUs
  - swoole_errno — Obtém o código de erro da última chamada de sistema
  - swoole_error_log — Retorna mensagens de erro para o log
  - swoole_event_add — Adiciona novas funções de retorno de chamada de um socket no EventLoop
  - swoole_event_defer — Adiciona função de retorno de chamada para o próximo loop de eventos
  - swoole_event_del — Remove todas as funções de retorno de chamada de evento de um socket
  - swoole_event_exit — Sai do eventloop, disponível apenas no lado do cliente
  - swoole_event_set — Atualiza as funções de retorno de chamada de evento de um socket
  - swoole_event_wait — Inicia o loop de eventos
  - swoole_event_write — Escreve dados em um socket
  - swoole_get_local_ip — Obtém os endereços IP IPv4 de cada NIC na máquina
  - swoole_last_error — Obtém a mensagem de erro mais recente
  - swoole_load_module — Carrega uma extensão do Swoole
  - swoole_select — Seleciona as descrições de arquivo que estão prontas para leitura/escrita ou erro no loop de eventos
  - swoole_set_process_name — Define o nome do processo
  - swoole_strerror — Converte o Errno em mensagens de erro
  - swoole_timer_after — Aciona uma função de retorno de chamada única no futuro
  - swoole_timer_exists — Verifica se uma função de retorno de chamada de temporizador existe
  - swoole_timer_tick — Aciona uma função de retorno de chamada de temporizador por intervalo de tempo
  - swoole_version — Obtém a versão do Swoole
- Swoole\Async — A classe Swoole\Async
  - Swoole\Async::dnsLookup — Pesquisa de host assíncrona e não bloqueante para IP.
  - Swoole\Async::read — Lê fluxo de arquivo de forma assíncrona.
  - Swoole\Async::readFile — Lê um arquivo de forma assíncrona.
  - Swoole\Async::set — Atualiza as opções de E/S assíncronas.
  - Swoole\Async::write — Escreve dados em um fluxo de arquivo de forma assíncrona.
  - Swoole\Async::writeFile — Escreve dados em um arquivo de forma assíncrona.
- Swoole\Atomic — A classe Swoole\Atomic
  - Swoole\Atomic::add — Adiciona um número ao valor do objeto atômico.
  - Swoole\Atomic::cmpset — Compara e define o valor do objeto atômico.
  - Swoole\Atomic::__construct — Constrói um objeto atômico do Swoole
  - Swoole\Atomic::get — Obtém o valor atual do objeto atômico.
  - Swoole\Atomic::set — Define um novo valor para o objeto atômico.
  - Swoole\Atomic::sub — Subtrai um número ao valor do objeto atômico.
- Swoole\Buffer — A classe Swoole\Buffer
  - Swoole\Buffer::append — Anexa a string ou dados binários ao final do buffer de memória e retorna o novo tamanho da memória alocada.
  - Swoole\Buffer::clear — Limpa o buffer de memória.
  - Swoole\Buffer::__construct — Alocação de blocos de memória de tamanho fixo.
  - Swoole\Buffer::__destruct — Destrói o buffer de memória do Swoole.
  - Swoole\Buffer::expand — Expande o tamanho do buffer de memória.
  - Swoole\Buffer::read — Lê dados do buffer de memória com base no deslocamento e no comprimento.
  - Swoole\Buffer::recycle — Libera a memória para o sistema operacional que não está sendo usada pelo buffer de memória.
  - Swoole\Buffer::substr — Lê dados do buffer de memória com base no deslocamento e no comprimento. Ou remove dados do buffer de memória.
  - Swoole\Buffer::__toString — Obtém o valor da string do buffer de memória.
  - Swoole\Buffer::write — Escreve dados no buffer de memória. A memória alocada para o buffer não será alterada.
- Swoole\Channel — A classe Swoole\Channel
  - Swoole\Channel::__construct — Constrói um canal Swoole
  - Swoole\Channel::__destruct — Destrói um canal Swoole.
  - Swoole\Channel::pop — Lê e retira dados do canal Swoole.
  - Swoole\Channel::push — Escreve e envia dados para o canal Swoole
  - Swoole\Channel::stats — Obtém estatísticas do canal Swoole.
- Swoole\Client — A classe Swoole\Client
  - Swoole\Client::close — Fecha a conexão estabelecida.
  - Swoole\Client::connect — Conecta à porta TCP ou UDP remota
  - Swoole\Client::__construct — Criar um cliente TCP/UDP síncrono ou assíncrono do Swoole, com ou sem SSL.
  - Swoole\Client::__destruct — Destrói o cliente Swoole.
  - Swoole\Client::getpeername — Obtém o nome do socket remoto da conexão.
  - Swoole\Client::getsockname — Obtém o nome do socket local da conexão.
  - Swoole\Client::isConnected — Verifica se a conexão está estabelecida.
  - Swoole\Client::on — Adiciona funções de retorno de chamada acionadas por eventos.
  - Swoole\Client::pause — Pausa a recepção de dados.
  - Swoole\Client::pipe — Redireciona os dados para outro descritor de arquivo.
  - Swoole\Client::recv — Recebe dados do socket remoto.
  - Swoole\Client::resume — Retoma a recepção de dados.
  - Swoole\Client::send — Envia dados para o socket TCP remoto.
  - Swoole\Client::sendfile — Envia arquivo para o socket TCP remoto.
  - Swoole\Client::sendto — Envia dados para o endereço remoto UDP.
  - Swoole\Client::set — Define os parâmetros do cliente Swoole antes que a conexão seja estabelecida.
  - Swoole\Client::sleep — Remove o cliente TCP do loop de eventos do sistema.
  - Swoole\Client::wakeup — Adiciona o cliente TCP de volta ao loop de eventos do sistema.
- Swoole\Connection\Iterator — A classe Swoole\Connection\Iterator
  - Swoole\Connection\Iterator::count — Conta conexões.
  - Swoole\Connection\Iterator::current — Retorna a entrada de conexão atual.
  - Swoole\Connection\Iterator::key — Retorna a chave da conexão atual.
  - Swoole\Connection\Iterator::next — Move para a próxima conexão.
  - Swoole\Connection\Iterator::offsetExists — Verifica se o deslocamento existe.
  - Swoole\Connection\Iterator::offsetGet — Deslocamento para recuperar.
  - Swoole\Connection\Iterator::offsetSet — tribui uma conexão ao deslocamento especificado.
  - Swoole\Connection\Iterator::offsetUnset — Desfaz um deslocamento.
  - Swoole\Connection\Iterator::rewind — Rebobina o iterador
  - Swoole\Connection\Iterator::valid — Verifica se a posição atual é válida.
- Swoole\Coroutine — A classe Swoole\Coroutine
  - Swoole\Coroutine::call_user_func — Chama um retorno de chamada fornecido pelo primeiro parâmetro
  - Swoole\Coroutine::call_user_func_array — Chama um retorno de chamada com um array de parâmetros
  - Swoole\Coroutine::cli_wait — Descrição
  - Swoole\Coroutine::create — Descrição
  - Swoole\Coroutine::getuid — Descrição
  - Swoole\Coroutine::resume — Descrição
  - Swoole\Coroutine::suspend — Descrição
- Swoole\Coroutine\Lock — A classe Swoole\Coroutine\Lock
  - Swoole\Coroutine\Lock::__construct — Constrói um novo bloqueio de corrotina
  - Swoole\Coroutine\Lock::lock — Adquire o bloqueio, bloqueando se necessário
  - Swoole\Coroutine\Lock::trylock — Tenta adquirir o bloqueio sem bloquear
  - Swoole\Coroutine\Lock::unlock — Libera o bloqueio
- Swoole\Event — A classe Swoole\Event
  - Swoole\Event::add — Adiciona novas funções de retorno de chamada de um socket no EventLoop.
  - Swoole\Event::defer — Adiciona uma função de retorno de chamada ao próximo loop de eventos.
  - Swoole\Event::del — Remove todas as funções de retorno de chamada de eventos de um socket.
  - Swoole\Event::exit — Sai do loop de eventos, disponível apenas no lado do cliente.
  - Swoole\Event::set — Atualiza as funções de retorno de chamada de eventos de um socket.
  - Swoole\Event::wait — Descrição
  - Swoole\Event::write — Escreve dados no socket.
- Swoole\Exception — A classe Swoole\Exception
- Swoole\Http\Client — A classe Swoole\Http\Client
  - Swoole\Http\Client::addFile — Adiciona um arquivo ao formulário de postagem.
  - Swoole\Http\Client::close — Fecha a conexão HTTP.
  - Swoole\Http\Client::__construct — Constrói o cliente HTTP assíncrono.
  - Swoole\Http\Client::__destruct — Destrói o cliente HTTP.
  - Swoole\Http\Client::download — Baixa um arquivo do servidor remoto.
  - Swoole\Http\Client::execute — Envia a solicitação HTTP após definir os parâmetros.
  - Swoole\Http\Client::get — Envia solicitação HTTP GET para o servidor remoto.
  - Swoole\Http\Client::isConnected — Verifica se a conexão HTTP está conectada.
  - Swoole\Http\Client::on — Registra função de retorno de chamada pelo nome do evento.
  - Swoole\Http\Client::post — Enviar uma solicitação http POST para o servidor remoto.
  - Swoole\Http\Client::push — Envia dados para o cliente WebSocket.
  - Swoole\Http\Client::set — Atualiza os parâmetros do cliente HTTP.
  - Swoole\Http\Client::setCookies — Define os cookies da requisição HTTP.
  - Swoole\Http\Client::setData — Define os dados do corpo da requisição HTTP.
  - Swoole\Http\Client::setHeaders — Define os cabeçalhos da requisição HTTP.
  - Swoole\Http\Client::setMethod — Define o método da requisição HTTP.
  - Swoole\Http\Client::upgrade — Faz um upgrade para o protocolo websocket.
- Swoole\Http\Request — A classe Swoole\Http\Request
  - Swoole\Http\Request::__destruct — Destrói a solicitação HTTP.
  - Swoole\Http\Request::rawcontent — Obtém o corpo HTTP POST bruto.
- Swoole\Http\Response — A classe Swoole\Http\Response
  - Swoole\Http\Response::cookie — Define os cookies da resposta HTTP.
  - Swoole\Http\Response::__destruct — Destrói a resposta HTTP.
  - Swoole\Http\Response::end — Envia dados para a solicitação HTTP e finaliza a resposta.
  - Swoole\Http\Response::gzip — Habilita a compressão gzip do conteúdo da resposta.
  - Swoole\Http\Response::header — Define os cabeçalhos da resposta HTTP.
  - Swoole\Http\Response::initHeader — Inicializa o cabeçalho da resposta HTTP.
  - Swoole\Http\Response::rawcookie — Define cookies brutos na resposta HTTP.
  - Swoole\Http\Response::sendfile — Envia um arquivo através da resposta HTTP.
  - Swoole\Http\Response::status — Define o código de status da resposta HTTP.
  - Swoole\Http\Response::write — Acrescenta conteúdo ao corpo da resposta HTTP.
- Swoole\Http\Server — A classe Swoole\Http\Server
  - Swoole\Http\Server::on — Vincula a função de retorno (callback) ao servidor HTTP pelo nome do evento.
  - Swoole\Http\Server::start — Iniciar o servidor http swoole.
- Swoole\Lock — A classe Swoole\Lock
  - Swoole\Lock::__construct — Constrói uma trava de memória
  - Swoole\Lock::__destruct — Destrói um bloqueio de memória do Swoole.
  - Swoole\Lock::lock — Tenta adquirir o bloqueio. Ele vai bloquear se o bloqueio não estiver disponível.
  - Swoole\Lock::lock_read — Bloqueia um bloqueio de leitura-escrita para leitura.
  - Swoole\Lock::trylock — Tenta adquirir o bloqueio e retorna imediatamente mesmo que o bloqueio não esteja disponível.
  - Swoole\Lock::trylock_read — Tenta bloquear um bloqueio de leitura-escrita para leitura e retorna imediatamente mesmo que o bloqueio não esteja disponível.
  - Swoole\Lock::unlock — Libera o bloqueio.
- Swoole\Mmap — A classe Swoole\Mmap
  - Swoole\Mmap::open — Mapeia um arquivo na memória e retorna o recurso de fluxo que pode ser usado pelas operações de fluxo do PHP.
- Swoole\MySQL — A classe Swoole\MySQL
  - Swoole\MySQL::close — Fecha a conexão assíncrona do MySQL.
  - Swoole\MySQL::connect — Conecta-se ao servidor MySQL remoto.
  - Swoole\MySQL::__construct — Constrói um cliente assíncrono do MySQL.
  - Swoole\MySQL::__destruct — Destrói o cliente assíncrono do MySQL.
  - Swoole\MySQL::getBuffer — Descrição
  - Swoole\MySQL::on — Registra uma função de retorno de chamada com base no nome do evento.
  - Swoole\MySQL::query — Executa a consulta SQL.
- Swoole\MySQL\Exception — A classe Swoole\MySQL\Exception
- Swoole\Process — A classe Swoole\Process
  - Swoole\Process::alarm — Temporizador de alta precisão que dispara um sinal em intervalos fixos.
  - Swoole\Process::close — Fecha a conexão (pipe) para o processo filho.
  - Swoole\Process::__construct — Constrói um processo.
  - Swoole\Process::daemon — Transforma o processo em um processo daemon.
  - Swoole\Process::__destruct — Destrói o processo.
  - Swoole\Process::exec — Executa comandos do sistema.
  - Swoole\Process::exit — Para os processos filhos.
  - Swoole\Process::freeQueue — Destrói a fila de mensagens criada por swoole_process::useQueue.
  - Swoole\Process::kill — Envia sinal para o processo filho.
  - Swoole\Process::name — Define o nome do processo.
  - Swoole\Process::pop — Lê e remove dados da fila de mensagens.
  - Swoole\Process::push — Escreve e insere dados na fila de mensagens.
  - Swoole\Process::read — Lê os dados enviados para o processo.
  - Swoole\Process::signal — Envia sinal para os processos filhos.
  - Swoole\Process::start — Inicia o processo.
  - Swoole\Process::statQueue — Obtém as estatísticas da fila de mensagens usada como método de comunicação entre processos.
  - Swoole\Process::useQueue — Cria uma fila de mensagens como método de comunicação entre o processo pai e os processos filhos.
  - Swoole\Process::wait — Aguarda os eventos dos processos filhos.
  - Swoole\Process::write — Escreve dados na conexão (pipe) e comunica com o processo pai ou processos filhos.
- Swoole\Redis\Server — A classe Swoole\Redis\Server
  - Swoole\Redis\Server::format — Descrição
  - Swoole\Redis\Server::setHandler — Descrição
  - Swoole\Redis\Server::start — Descrição
- Swoole\Runtime — A classe Swoole\Runtime
  - Swoole\Runtime::enableCoroutine — Habilita corrotina para funções especificadas
  - Swoole\Runtime::getHookFlags — Obtém os sinalizadores de gancho atuais
  - Swoole\Runtime::setHookFlags — Define sinalizadores de gancho para corrotina
- Swoole\Serialize — A classe Swoole\Serialize
  - Swoole\Serialize::pack — Serializa os dados.
  - Swoole\Serialize::unpack — Desserializa os dados.
- Swoole\Server — A classe Swoole\Server
  - Swoole\Server::addlistener — Adiciona um novo ouvinte (listener) ao servidor.
  - Swoole\Server::addProcess — Adiciona um processo definido pelo usuário (swoole_process) ao servidor.
  - Swoole\Server::after — Aciona uma função de retorno de chamada após um período de tempo.
  - Swoole\Server::bind — Vincula a conexão a um ID de usuário definido pelo usuário
  - Swoole\Server::clearTimer — Para e destrói um temporizador.
  - Swoole\Server::close — Fecha uma conexão com o cliente.
  - Swoole\Server::confirm — Verifica o status da conexão.
  - Swoole\Server::connection_info — Obtém informações da conexão pelo descritor de arquivo.
  - Swoole\Server::connection_list — Obtém todas as conexões estabelecidas.
  - Swoole\Server::__construct — Constrói um servidor Swoole.
  - Swoole\Server::defer — Atrasa a execução da função de retorno de chamada até o final do EventLoop atual.
  - Swoole\Server::exist — Verifica se a conexão existe.
  - Swoole\Server::finish — Usado no processo de tarefa para enviar o resultado para o processo trabalhador quando a tarefa é concluída.
  - Swoole\Server::getClientInfo — Obtém as informações da conexão pelo descritor de arquivo.
  - Swoole\Server::getClientList — Obtém todas as conexões estabelecidas.
  - Swoole\Server::getLastError — Obtém o código de erro do erro mais recente.
  - Swoole\Server::heartbeat — Verifica todas as conexões no servidor.
  - Swoole\Server::listen — Ouve no IP, porta e tipo de socket fornecidos.
  - Swoole\Server::on — Registra uma função de retorno de chamada pelo nome do evento.
  - Swoole\Server::pause — Para de receber dados da conexão.
  - Swoole\Server::protect — Define a conexão para o modo protegido.
  - Swoole\Server::reload — Reinicia todos os processos do trabalhador (worker).
  - Swoole\Server::resume — Inicia a recepção de dados da conexão.
  - Swoole\Server::send — Envia dados para o cliente.
  - Swoole\Server::sendfile — Envia arquivo para a conexão.
  - Swoole\Server::sendMessage — Envia mensagem para processos de trabalhador por ID.
  - Swoole\Server::sendto — Envia dados para o endereço UDP remoto.
  - Swoole\Server::sendwait — Envia dados para o socket remoto de forma bloqueada.
  - Swoole\Server::set — Define as configurações em tempo de execução do servidor Swoole.
  - Swoole\Server::shutdown — Desliga o processo mestre do servidor, esta função pode ser chamada nos processos de trabalho.
  - Swoole\Server::start — Inicia o servidor Swoole.
  - Swoole\Server::stats — Obtém as estatísticas do servidor Swoole.
  - Swoole\Server::stop — Para o servidor Swoole.
  - Swoole\Server::task — Envia dados para os processos de trabalho de tarefa.
  - Swoole\Server::taskwait — Envia dados para os processos de trabalho de tarefa de forma bloqueante.
  - Swoole\Server::taskWaitMulti — Executa várias tarefas concorrentemente.
  - Swoole\Server::tick — Repete uma função fornecida em cada intervalo de tempo especificado.
- Swoole\Table — A classe Swoole\Table
  - Swoole\Table::column — Define o tipo de dados e o tamanho das colunas.
  - Swoole\Table::__construct — Constrói uma tabela de memória Swoole com tamanho fixo
  - Swoole\Table::count — Conta as linhas na tabela, ou conta todos os elementos na tabela se $mode = 1
  - Swoole\Table::create — Cria a tabela de memória Swoole
  - Swoole\Table::current — Obtém a linha atual
  - Swoole\Table::decr — Decrementa o valor na tabela Swoole pela chave e pela coluna
  - Swoole\Table::del — Exclui uma linha na tabela Swoole pela chave
  - Swoole\Table::destroy — Destrói a tabela Swoole
  - Swoole\Table::exist — Verifica se uma linha informando a chave
  - Swoole\Table::get — Obtém o valor na tabela Swoole pela chave e pelo campo
  - Swoole\Table::incr — Incrementa o valor pela chave e pela coluna
  - Swoole\Table::key — Obtém a chave da linha atual.
  - Swoole\Table::next — Avança o iterador para a próxima linha
  - Swoole\Table::rewind — Retrocede o iterador
  - Swoole\Table::set — Atualiza uma linha da tabela pela chave
  - Swoole\Table::valid — Verifica se a linha atual é válida
- Swoole\Timer — A classe Swoole\Timer
  - Swoole\Timer::after — Aciona uma função de retorno de chamada após um período de tempo.
  - Swoole\Timer::clear — Exclui um temporizador pelo ID do temporizador.
  - Swoole\Timer::exists — Verifica se um temporizador existe.
  - Swoole\Timer::tick — Repete uma função fornecida em cada intervalo de tempo especificado.
- Swoole\WebSocket\Frame — A classe Swoole\WebSocket\Frame
- Swoole\WebSocket\Server — A classe Swoole\WebSocket\Server
  - Swoole\WebSocket\Server::exist — Verifica se o descritor de arquivo existe.
  - Swoole\WebSocket\Server::on — Registra função de retorno de chamada de evento
  - Swoole\WebSocket\Server::pack — Obtém um pacote de dados binários para enviar em um único quadro.
  - Swoole\WebSocket\Server::push — Envia dados para o cliente remoto.
  - Swoole\WebSocket\Server::unpack — Desempacota os dados binários recebidos do cliente.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open