İçeriğe geç
FrankenPHP

FrankenPHP, Caddy üzerine kurulu modern bir PHP uygulama sunucusudur. PHP-FPM’in yerine her projede otomatik olarak konulacak bir ürün değil; özellikle uzun yaşayan worker process’leri, otomatik HTTPS ve Mercure ile gerçek zamanlı iletişim ihtiyacı olan uygulamalarda değerlendirilmesi gereken bir runtime’dır.

Mono’da kullanım alanları

  • Yüksek performanslı PHP API’leri
  • Symfony / Laravel uygulamaları için modern runtime
  • Real-time özellikler için Mercure entegrasyonu

Geçişte kontrol edilmesi gerekenler

Worker mode’da global state, dosya cache’i ve tek istek sonunda temizlenmesi beklenen değişkenler klasik PHP-FPM davranışından farklı sonuç verebilir. Bu nedenle uygulama kodu, opcache, session/queue altyapısı ve graceful deployment birlikte test edilir. Mono, geçişi tek servisle başlatıp metrikler doğrulandıktan sonra yaygınlaştırır.

Worker mode neyi değiştirir?

Klasik PHP istek modelinde uygulamanın başlangıç işlemleri her istek için tekrarlanır. Worker mode, uyumlu uygulamalarda başlangıç maliyetinin bir kısmını istekler arasında paylaşmayı amaçlar. Framework’ün yüklenmesi pahalıysa bu anlamlı olabilir; ancak yavaşlığın kaynağı veritabanı sorgusu veya dış API ise runtime değiştirmek o beklemeyi ortadan kaldırmaz.

Uzun yaşayan worker’larda kullanıcıya özgü verilerin sonraki isteğe taşınmaması gerekir. Statik değişkenler, singleton servisler, açık veritabanı işlemleri ve request’e bağlı nesneler incelenmelidir. Özellikle farklı müşterilere hizmet veren uygulamalarda durum sızıntısı yalnızca performans sorunu değil, veri gizliliği riskidir. Uyumlu framework entegrasyonu kullanılsa bile uygulamaya özel servislerin davranışı doğrulanır.

FrankenPHP mi PHP-FPM mi?

İhtiyaçDeğerlendirme
Mevcut uygulamayı az değişiklikle işletmekPHP-FPM’in bilinen süreç modeliyle devam etmek daha düşük riskli olabilir.
Yüksek uygulama başlangıç maliyetiWorker mode için uyumluluk ve yük testi yapılır.
Tek pakette web sunucusu ve PHPFrankenPHP dağıtımı sadeleştirebilir; eklenti gereksinimleri doğrulanır.
Ayrı Unix kullanıcılarıyla havuz işletmekPHP-FPM pool modeli ile konteyner bazlı izolasyon karşılaştırılır.

Bir PHP eklentisinin mevcut FPM ortamında çalışması, yeni runtime ve derleme seçenekleriyle otomatik uyumlu olduğu anlamına gelmez. PHP sürümü, thread-safety gereksinimleri ve native kütüphaneler test kapsamına alınmalıdır. Queue tüketicileri ve zamanlanmış işler de HTTP katmanından ayrı değerlendirilir.

Geçiş başarısını hangi metriklerle ölçeriz?

Aynı uygulama sürümü ve benzer kaynak sınırlarıyla iki ortam karşılaştırılır. Yalnızca boş bir endpoint üzerinden yüksek istek sayısı ölçmek yerine oturum açma, veri tabanlı listeleme, dosya yükleme ve hata akışları denenir. p95 gecikmesi, CPU, bellek büyümesi ve başarısız istek oranı birlikte değerlendirilir. Uzun süreli test, birkaç dakikalık testte görülmeyen bellek birikimini ortaya çıkarabilir.

Yayınlanan yeni kodun worker’lara ne zaman yansıyacağı ve eski worker’ların nasıl kapatılacağı deploy planının parçasıdır. Geri dönüşte önceki image, konfigürasyon ve veri tabanı uyumluluğu korunmalıdır. Mono’nun önerdiği yaklaşım, ölçülen faydayı doğrulamadan bütün PHP servislerini aynı anda taşımamak; önce sınırlı bir uygulamayla işletim tecrübesi oluşturmaktır.

İlgili hizmetlerimiz

Sıkça sorulan sorular

FrankenPHP ile PHP-FPM farkı nedir?
PHP-FPM istek başına klasik PHP worker havuzlarıyla çalışırken FrankenPHP, Caddy tabanlı runtime ve worker mode ile uygulamayı bellekte sıcak tutabilir. Geçiş kararı uygulamanın uyumluluğu, bellek profili ve deployment modeline göre verilmelidir.
FrankenPHP production için uygun mu?
Evet; ancak worker mode, normal mode, Caddy konfigürasyonu, opcache, graceful reload ve gözlemlenebilirlik birlikte test edilmelidir. Her PHP uygulaması worker mode ile uyumlu olmayabilir; önce staging ve yük testi yapılmalıdır.
FrankenPHP Laravel ve Symfony ile çalışır mı?
Laravel ve Symfony gibi modern PHP framework’leriyle kullanılabilir. Runtime sürümü, eklentiler, queue worker’ları, session store ve dosya yazma davranışı uygulamaya özel kontrol edilmelidir.

Bir sonraki dönüşümü birlikte planlayalım.

Ekibimiz teknik gereksinimlerinizi anlamak ve hızlıca prototip çıkarmak için hazır.