0Pricing
PHP Academy · Aula

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

  1. Expressão match e argumentos nomeados
  2. Operador nullsafe e tipos união
  3. Enumerações (Enums)
  4. Fibers: concorrência cooperativa
← Voltar para PHP Academy