Fibers: współbieżność kooperacyjna
Wstrzymuj i wznawiaj wykonywanie PHP za pomocą Fibers, tworząc wzorce przypominające asynchroniczne
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?
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
- Wyrażenie match i argumenty nazwane
- Operator nullsafe i typy sum
- Wyliczenia (enumy)
- Fibers: współbieżność kooperacyjna