Fibers: concorrência cooperativa
Pause e retome a execução do PHP com Fibers para criar padrões semelhantes a operações assíncronas.
Fibers: concorrência cooperativa é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.
O que são fibras?
O PHP 8.1 introduziu as fibras, corrotinas leves que podem pausar a execução em um ponto específico e retomá-la posteriormente, permitindo multitarefa cooperativa.
Fibras versus assíncrono
As fibras não são threads paralelas; o PHP continua sendo executado em uma única thread. As fibras permitem que um contexto de execução ceda voluntariamente o controle a outro, possibilitando padrões semelhantes aos assíncronos.
Criação de uma fibra
Crie uma fibra passando uma função chamável ao seu construtor. A fibra não é iniciada até que você chame start().
<?php
$fiber = new Fiber(function (): void {
echo "Fiber started\n";
$value = Fiber::suspend("first suspension");
echo "Resumed with: $value\n";
});
Iniciando e suspendendo
start() executa a fibra até o primeiro Fiber::suspend(). O valor passado a suspend() é retornado por start().
<?php
$suspended = $fiber->start(); // runs until suspend()
echo $suspended; // "first suspension"
Retomando uma fibra
resume($value) continua a fibra a partir do ponto em que ela foi suspensa. O valor passado a resume() é retornado por Fiber::suspend() dentro da fibra.
<?php
$fiber->resume("hello from main");
// Inside fiber: $value = "hello from main"
// Prints: "Resumed with: hello from main"Exemplo completo de fibra
Um ciclo de vida completo da fibra: criar, iniciar, suspender, retomar e terminar.
<?php
$fiber = new Fiber(function (): string {
$x = Fiber::suspend("paused");
return "Fiber done, received: $x";
});
$msg = $fiber->start(); // "paused"
$fiber->resume("hi!");
echo $fiber->getReturn(); // "Fiber done, received: hi!"Métodos de status da fibra
Verifique o estado da fibra: isStarted(), isSuspended(), isRunning(), isTerminated().
<?php
var_dump($fiber->isTerminated()); // true after getReturn()Tratamento de erros em fibras
Lance uma exceção em uma fibra com $fiber->throw(new Exception(...)). A exceção aparece no ponto de Fiber::suspend() dentro da fibra.
Integração com o loop de eventos
As fibras foram projetadas para dar suporte a loops de eventos (ReactPHP, Revolt), nos quais os retornos de chamada de E/S são suspensos enquanto aguardam e retomados quando os dados chegam.
Fibras versus geradores
Os geradores (PHP 5.5+) também fazem uma pausa com yield, mas são usados principalmente para iteração sob demanda. As fibras são um mecanismo de corrotinas mais geral, com passagem bidirecional de valores e valores de retorno.
Casos de uso práticos
As fibras dão suporte a clientes HTTP não bloqueantes no Revolt, consultas assíncronas ao banco de dados, agendadores cooperativos de tarefas e fluxos de dados contínuos sem a complexidade da execução em várias threads.
Resumo
As fibras permitem que um contexto de execução do PHP seja pausado e retomado, possibilitando a concorrência cooperativa. Elas sustentam as estruturas assíncronas modernas do PHP. Fiber::suspend() cede o controle; resume() o restaura.
Verificação rápida
Como você passa um valor para uma fibra suspensa?
Perguntas Frequentes
A aula “Fibers: concorrência cooperativa” é grátis?
Sim — o texto completo de “Fibers: concorrência cooperativa” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.
O que vou aprender em “Fibers: concorrência cooperativa”?
Pause e retome a execução do PHP com Fibers para criar padrões semelhantes a operações assíncronas. Você pratica PHP Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar PHP Academy?
Nenhuma experiência prévia é necessária. PHP Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Fibers: concorrência cooperativa”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de PHP Academy?
Sim. Cada aula de PHP Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Expressão match e argumentos nomeados
- Operador nullsafe e tipos união
- Enumerações (Enums)
- Fibers: concorrência cooperativa