CodeBlanks Logo Icon CodeBlanks

Fibers

PHP kursu · Uzman · Ders 40/54

Fiber sınıfıyla iş parçacığı benzeri eşyordam (coroutine) yazmayı öğrenirsin.

Fiber nedir?

PHP 8.1 ile gelen Fiber sınıfı, bir eşyordam (coroutine) yani iş parçacığı benzeri ama yardımcı yürütümü temsil eder. Aynı çağrı yığınında duraklayıp devam edebilen bir kod parçasıdır.

new Fiber(fn) ile oluşturulur. ->start() yöntemi fiber'ı başlatır; Fiber::suspend() duraklatıp dışarı döner; ->resume() sürdürür.

Fiber'lar işletim sistemi iş parçacığı değildir; işbirliğine dayalı (cooperative) çoklu görev için kullanılır. Bir fiber kendisi duraklamadan başkası çalışmaz.

suspend ve resume arasında veri

Fiber içinde Fiber::suspend($v) çağrısı yürütmeyi durdurur ve $v değerini start() çağrısına döndürür. Dışarıdan ->resume($w) ile sürdürülür; $w değeri suspend() çağrısının sonucu olur.

Böylece fiber ve çağıran kişi arasında iki yönlü bir değer akışı kurulur. Fiber tamamlanınca getReturn() ile dönüş değeri alınır.

Tipik kullanım: asenkron I/O, üretici-tüketici desenleri ve olay döngüsü (event loop) uygulamaları.

Uygulama Temel bir Fiber akışı

Bir Fiber oluştur: başlatılınca fiber-start yazdırsın, Fiber::suspend() ile duraksın, sürdürülünce fiber-end yazdırsın.

Dışarıda sırayla start(), main1 yazdırma, resume(), main2 yazdırma yap. Çıktı sıra ile fiber-start, main1, fiber-end, main2 olmalı.

Örnek çözümü göster
$f = new Fiber(function (): void {
  echo "fiber-start\n";
  Fiber::suspend();
  echo "fiber-end\n";
});

$f->start();
echo "main1\n";
$f->resume();
echo "main2\n";

Kendini test et

  1. Fiber'ı hangi yöntem başlatır?

    • run()
    • begin()
    • start()
    • launch()
    Cevabı göster

    start() — Doğru. Fiber sınıfının start() yöntemi fiber'ı başlatır ve ilk değeri gönderir.

  2. Fiber duraklatma çağrısı

    $f = new Fiber(function ($n) {
      echo $n;
      ____($n + 1);
    });
    
    Cevabı göster
    $f = new Fiber(function ($n) {
      echo $n;
      Fiber::suspend($n + 1);
    });
    
  3. Fiber kavramlarını eşleştir

    Fiber
    eşyordam sınıfı
    start
    fiber'ı başlatır
    suspend
    fiber'ı duraklatır
    resume
    duraklayanı sürdürür

Uzman bölümündeki tüm dersler