Processo de execução
Fluxo de inicialização do processo
Após executar php start.php start, o fluxo de execução é o seguinte:
- Carregar as configurações em config/
- Definir as configurações do Worker, como
pid_file
,stdout_file
,log_file
,max_package_size
, entre outros - Criar o processo webman e escutar a porta (padrão 8787)
- Criar processos personalizados conforme as configurações
- Após a inicialização dos processos webman e personalizados, executar as seguintes lógicas (todas executadas em onWorkerStart):
① Carregar os arquivos definidos emconfig/autoload.php
, comoapp/functions.php
② Carregar os middlewares definidos emconfig/middleware.php
(incluindoconfig/plugin/*/*/middleware.php
)
③ Executar o método start das classes definidas emconfig/bootstrap.php
(incluindoconfig/plugin/*/*/bootstrap.php
) para inicializar módulos, como a inicialização da conexão do banco de dados do Laravel
④ Carregar as rotas definidas emconfig/route.php
(incluindoconfig/plugin/*/*/route.php
)
Fluxo de tratamento de requisição
- Verificar se a URL da requisição corresponde a um arquivo estático em public. Se sim, retornar o arquivo (encerrar a requisição); caso contrário, prosseguir para o passo 2
- Verificar se a URL corresponde a uma rota específica. Se não corresponder, prosseguir para o passo 3; se corresponder, prosseguir para o passo 4
- Verificar se as rotas padrão estão desabilitadas. Se estiverem, retornar o código 404 (encerrar a requisição); caso contrário, prosseguir para o passo 4
- Encontrar os middlewares do controlador correspondente à requisição, executar as operações de pré-processamento dos middlewares em ordem (fase de requisição do modelo de cebola), executar a lógica de negócios do controlador, executar as operações de pós-processamento dos middlewares (fase de resposta do modelo de cebola) e encerrar a requisição. (Consulte o modelo de cebola de middleware em https://www.workerman.net/doc/webman/middleware.html#%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%B4%8B%E8%91%B1%E6%A8%A1%E5%9E%8B)