PHP Academy · Lekcja

Fibers: współbieżność kooperacyjna

Wstrzymuj i wznawiaj wykonywanie PHP za pomocą Fibers, tworząc wzorce przypominające asynchroniczne

Lekcja 4 z 413 kroki

Fibers: współbieżność kooperacyjna to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej PHP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs PHP Academy zawiera 4 lekcji w sumie.

Czym są Fibers?

PHP 8.1 wprowadził Fibers — lekkie korutyny, które mogą wstrzymać wykonywanie w określonym punkcie i wznowić je później, umożliwiając współbieżność kooperatywną.

Fibers a asynchroniczność

Fibers nie są równoległymi wątkami — PHP nadal działa jednowątkowo. Fibers pozwalają jednemu kontekstowi wykonywania dobrowolnie przekazać sterowanie innemu, umożliwiając wzorce przypominające programowanie asynchroniczne.

Tworzenie Fibers

Utwórz Fiber, przekazując funkcję wywoływalną do jego konstruktora. Fiber nie rozpocznie działania, dopóki nie zostanie wywołane start().

<?php
$fiber = new Fiber(function (): void {
    echo "Fiber started\n";
    $value = Fiber::suspend("first suspension");
    echo "Resumed with: $value\n";
});

Uruchamianie i wstrzymywanie

start() uruchamia Fiber aż do pierwszego wywołania Fiber::suspend(). Wartość przekazana do suspend() jest zwracana przez start().

<?php
$suspended = $fiber->start(); // runs until suspend()
echo $suspended; // "first suspension"

Wznawianie działania Fiber

resume($value) wznawia działanie Fiber od miejsca, w którym został wstrzymany. Wartość przekazana do resume() jest zwracana przez Fiber::suspend() wewnątrz Fiber.

<?php
$fiber->resume("hello from main");
// Inside fiber: $value = "hello from main"
// Prints: "Resumed with: hello from main"

Kompletny przykład użycia Fiber

Pełny cykl życia Fiber: utworzenie, uruchomienie, wstrzymanie, wznowienie i zakończenie.

<?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!"

Metody sprawdzające stan Fiber

Sprawdź stan Fiber za pomocą metod: isStarted(), isSuspended(), isRunning(), isTerminated().

<?php
var_dump($fiber->isTerminated()); // true after getReturn()

Obsługa błędów w Fiber

Wyjątek można przekazać do Fiber za pomocą $fiber->throw(new Exception(...)). Wyjątek pojawi się w miejscu Fiber::suspend() wewnątrz Fiber.

Integracja z pętlą zdarzeń

Fiber został zaprojektowany do obsługi pętli zdarzeń (ReactPHP, Revolt), w których wywołania zwrotne operacji wejścia-wyjścia są wstrzymywane na czas oczekiwania, a następnie wznawiane po nadejściu danych.

Fiber a Generators

Generators (dostępne od PHP 5.5+) również wstrzymują działanie za pomocą yield, ale służą przede wszystkim do leniwej iteracji. Fiber to bardziej ogólny mechanizm korutyn, umożliwiający dwukierunkowe przekazywanie wartości oraz zwracanie wartości.

Praktyczne zastosowania

Fiber umożliwia tworzenie nieblokujących klientów HTTP w Revolt, asynchronicznych zapytań do baz danych, kooperatywnych harmonogramów zadań oraz potoków strumieniowego przetwarzania danych bez złożoności związanej z wielowątkowością.

Podsumowanie

Fiber pozwala wstrzymywać i wznawiać działanie w ramach jednego kontekstu wykonania PHP, umożliwiając współbieżność kooperatywną. Stanowi podstawę nowoczesnych asynchronicznych frameworków PHP. Fiber::suspend() przekazuje sterowanie, a resume() je przywraca.

Szybkie sprawdzenie

Jak przekazać wartość do wstrzymanego Fiber?

Bezpłatny start

Ucz się PHP dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
49
Lekcje
195

Często zadawane pytania

Czy lekcja „Fibers: współbieżność kooperacyjna” jest bezpłatna?

Tak — pełny tekst „Fibers: współbieżność kooperacyjna” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu PHP Academy, przejdź na CoddyKit PRO. Kurs PHP Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Fibers: współbieżność kooperacyjna”?

Wstrzymuj i wznawiaj wykonywanie PHP za pomocą Fibers, tworząc wzorce przypominające asynchroniczne Ćwiczysz PHP Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć PHP Academy?

Nie wymagamy żadnego doświadczenia. PHP Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Fibers: współbieżność kooperacyjna”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji PHP Academy?

Tak. Każda lekcja PHP Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Wyrażenie match i argumenty nazwane
  2. Operator nullsafe i typy sum
  3. Wyliczenia (enumy)
  4. Fibers: współbieżność kooperacyjna
← Powrót do PHP Academy