- PHP şu anda internetteki web sitelerinin yaklaşık %75’ini oluşturuyor
- PHP, programlama dilleri arasında “seksi çocuk” sayılmaz ama internetin doğuşundan bu yana önemli bir rol oynadı
- Artık PHP, Wasmer ve Wasmer Edge üzerinde tamamen çalıştırılabiliyor (açık beta)
PHP’yi WebAssembly üzerinde çalıştırmanın önemi
- WebAssembly’nin özellikleri sayesinde bir programın erişebileceği kaynaklar güvenli biçimde sınırlandırılabiliyor
- PHP, OS ya da donanım sanallaştırmasının ek yükü olmadan güvenli şekilde çalıştırılabiliyor
- Wasmer ekibi, PHP’nin WebAssembly üzerinde eksiksiz ve mümkün olduğunca hızlı çalışması için sayısız saat harcadı
- WebAssembly içinde opcode caching etkinleştirilerek 3 kata kadar daha yüksek hız elde edildi
PHP uygulamalarına serverless benzeri ölçeklenebilirlik sağlamak
- Tüm PHP uygulamalarına serverless benzeri ölçeklenebilirlik kazandırmak büyük bir değer yaratabilir
- PHP uygulamalarını Edge üzerinde çalıştırabilir ve bulut sağlayıcılarının talep ettiği ücretin yalnızca bir kısmını ödeyebilirsiniz
- Tüm PHP uygulamaları Wasmer ile çalıştırılabilir; uygulamanın sandbox’tan çıkıp yapmaması gereken zararlı işler yapacağından endişe etmenize gerek kalmaz
En popüler PHP framework’leri Wasmer ve Wasmer Edge üzerinde çalışabiliyor
- WordPress
- Symfony
- Laravel
- Tüm PHP şablonları: https://wasmer.io/templates?language=php
- Not: Özel dosya sistemi volume’leri için Wasmer Edge desteği üzerinde çalışılıyor. SQLite kullanan dağıtılmış uygulamalar (WordPress veya Symfony gibi) şu anda veritabanı değişikliklerini yalnızca bellekte tutuyor ve henüz kalıcı olarak saklamıyor
WebAssembly ve PHP’den en yüksek verimi almak
- Opcode caching etkinleştirilerek WordPress, herhangi bir değişiklik yapılmadan 3 kat daha hızlı çalıştırılabiliyor (600ms’ten 200ms’ye)
Kendiniz deneyin
Teknik bir başarı
- PHP’nin Wasmer üzerinde WebAssembly olarak eksiksiz çalışmasını sağlamak kolay bir iş değildi
- Süreç boyunca ilerlerken birçok sorun çözüldü:
- PHP içinde try/catch ifadelerini kullanmak için gerekli olan longjmp/setjmp uygulamasında stack’in üzerine yazıldığı ve düzgün geri yüklenmediği belirsiz bir bug bulundu
- Giden HTTP çağrılarını 10 kat yavaşlatan bir bug keşfedilip düzeltildi
- Varsayılan olarak PHP opcache etkinleştirilerek PHP süresinde 3 kata kadar hız kazanıldı
- Dosya sistemi sanallaştırma katmanı ve networking (IPv6) için birçok küçük düzeltme yapıldı
- Daha önce WordPress’i Wasmer üzerinde çalıştırmaya dair blog yazısını izlediyseniz, WordPress tarafında davranışı değiştirip engelleyici edge case’leri tetiklememek için çok sayıda kod değişikliği (yani hack) yapmak gerektiğini biliyor olabilirsiniz
- En yeni Wasmer sürümünde WordPress, Laravel ve Symfony hiçbir kod değişikliği olmadan Wasmer üzerinde çalışıyor
Hız
- PHP’yi sadece temel hızda çalıştırmak yeterli değildi; amaç, onu WebAssembly üzerinde mümkün olduğunca hızlı çalıştırmaktı
- PHP’de yürütme hızını ciddi biçimde artıran Zend Opcache modülü bulunuyor
- Opcode caching modülü, PHP kaynağının dönüştürüldüğü bytecode’u optimize edip cache’leyerek daha önce işlenmiş dosyalar için AST ayrıştırma süresinden tasarruf sağlıyor
- Opcode caching, uygulamanın işleyebildiği istek sayısını 3 kata kadar artırabildiği için bunu WebAssembly’de etkinleştirmek bariz görünüyordu
- Ancak opcode caching (ve Zend modül yükleme) varsayılan olarak devre dışıydı (çünkü Wasm’da kullanılamayan
dlopen, dlsym vb. gerektiriyordu)
- Benzersiz bir göreve çıkıldı: PHP’de opcode caching’i etkinleştirmek
- Yapılan araştırmaların ardından statik bağlama için yeni bir yöntem bulundu; bu süreçte birçok şeyin düzeltilmesi gerekti ama sonunda başarıldı
- Opcache olmadan Wasm üzerinde WordPress zamanlaması: ~620ms
- Opcache etkinleştirilmiş halde Wasm üzerinde WordPress zamanlaması: ~205ms
- Sadece Opcache’i etkinleştirmek bile 3 kat hız artışı sağlıyor!
- PHP’yi native hıza daha da yaklaştırmak için yapılabilecek daha çok iyileştirme olduğu görüldü (takipte kalın!)
Daha fazla fırsatın önü açılıyor
- WordPress playground gibi, şu anda tarayıcıda PHP çalıştırmak için Emscripten’a bağımlı projeler için daha fazla fırsat doğuyor
- Bu tür projeler hem tarayıcıda hem de Edge’de çalışabilen paketler haline gelebilir
- Cold-start konusunda tamamen yenilikçi bir yaklaşım hazırlanıyor (Cloudflare & Fly.io, sizi izliyoruz!)
- Edge pazarı için heyecan verici bir dönem yaklaşıyor
2 yorum
Kişisel olarak PHP'nin hâlâ çok aktif şekilde kullanılıyor olması bana hem etkileyici hem de ilginç geliyor. haha Kötü bir şöhrete sahip olduğu dönemleri geride bırakıp artık çok değiştiği söyleniyor; ben de PHP'yi bir kez daha denesem mi diye düşünüyorum.
Hacker News'da da GeekNews'ta da PHP denince hoşlanmayan çok kişi var, haha
Ama bence web denen teknoloji tamamen başka bir şeyle değişmediği sürece kullanılmaya devam edecek.
Odak noktasını "dil" denen şeye değil, "web"e uygun teknolojilerden biri olarak görmek gerektiğini düşünüyorum.