« Tüm yayınlar

PHP'nin Polling API'si: Fiber'lar İçin Eksik Halka Netleşti

PHP'nin Polling API'si master'a birleşti; Fiber'larla birlikte async PHP'nin altyapısını nasıl değiştirdiğini kod örnekleriyle inceliyoruz.

PHP'nin Polling API RFC'si 33-1 oyla kabul edildi ve uygulama zaten master dalına birleşti; alfa 2 Temmuz, beta Ağustos ortası, GA ise 19 Kasım'da planlanıyor. Bu, PHP 8.1'den beri var olan Fiber'ların artık native, verimli bir I/O bildirim mekanizmasıyla eşleşebileceği anlamına geliyor.

Kritik nokta şu: Fiber bir eşzamanlılık ilkeli, Polling API ise bir olay döngüsü değil. Fiber'lar duraklatılabilir fonksiyonlar sağlıyor; Polling API ise hangi dosya tanımlayıcılarının hazır olduğunu işletim sisteminden verimli şekilde öğrenmenin native yolunu sunuyor. ReactPHP'nin dört ayrı loop implementasyonu tutması ya da AMPHP'nin Revolt'u inşa etmesi, tam olarak bu native ilkelin eksikliğinden kaynaklanıyordu.

Bunu somutlaştırmak için, ham non-blocking soketler üzerinden birden fazla URL'yi eşzamanlı çeken minimal bir scheduler koddan yola çıkılarak gösteriliyor: tek bir Io\Poll\Context, birden fazla Fiber'ı yönetiyor, hiçbir tight-loop polling olmadan. Kod ayrıca kısmi yazma (short-write) ve EOF davranışı gibi ince ama üretimde kritik detayları da ele alıyor.

Mühendisler için pratik sonuç: Amp v3/Revolt veya ReactPHP gibi kütüphanelerin arka planda ne yaptığını anlamak artık çok daha kolay, çünkü altta yatan primitif artık PHP çekirdeğinde native olarak mevcut.