Fibers în PHP 8.1 (Asincronism și Concurrency Cooperativă) în PHP

Ghid pentru primitivele de concurență Fiber în PHP: cum permiți suspendarea și reluarea funcțiilor pentru I/O asincron non-blocant (Revolt, Amp, Swoole).

Sintaxă
$fiber = new Fiber(function(): void { Fiber::suspend('pauză'); });

Fibers (introduse în PHP 8.1) sunt primitive de concurență de nivel jos (low-level) care permit crearea de blocuri de cod întreruptibile și reluabile (Coroutines). Spre deosebire de generatoarele clasice (yield), un Fiber poate fi suspendat din interiorul oricărui nivel de adâncime al stivei de apeluri (call stack), permițând scrierea de cod asincron și non-blocant care arată și se citește exact ca un cod sincron obișnuit.

Exemplu de bază: Crearea, suspendarea și reluarea unui Fiber
<?php

declare(strict_types=1);

// 1. Inițializarea unui Fiber cu funcția sa executabilă
$fiber = new Fiber(function (string $mesaj): void {
    echo "1. Fiber a pornit cu mesajul: {$mesaj}\n";
    
    // Suspendăm execuția Fiber-ului și transmitem o valoare către firul principal
    $raspunsPrincipal = Fiber::suspend("Pauză: Aștept date de la firul principal.");
    
    echo "3. Fiber a fost reluat și a primit: {$raspunsPrincipal}\n";
});

// 2. Pornirea Fiber-ului din firul principal
$stare = $fiber->start("Salut din exterior!");
echo "2. În firul principal: Fiber-ul este suspendat cu starea: '{$stare}'\n";

// 3. Reluarea Fiber-ului și transmiterea de date înapoi
$fiber->resume("Răspuns autorizat de continuare.");

// Output consolă:
// 1. Fiber a pornit cu mesajul: Salut din exterior!
// 2. În firul principal: Fiber-ul este suspendat cu starea: 'Pauză: Aștept date de la firul principal.'
// 3. Fiber a fost reluat și a primit: Răspuns autorizat de continuare.

De ce sunt Fibers esențiale pentru ecosistemul PHP

Deși majoritatea dezvoltatorilor nu vor manipula direct clasa Fiber în codul de zi cu zi, Fibers stau la baza serverelor moderne de mare viteză și a framework-urilor asincrone precum Revolt PHP, Amp și ReactPHP, permițând procesarea a zeci de mii de cereri HTTP sau conexiuni WebSocket simultane pe un singur proces PHP.

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Fibers în PHP 8.1 (Asincronism și Concurrency Cooperativă)

Ai o nelămurire despre utilizarea comenzii Fibers în PHP 8.1 (Asincronism și Concurrency Cooperativă) sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.