Modern PHP Uygulama Sunucusu, Go ile yazılmıştır
FrankenPHP, PHP uygulamaları için yeni bir uygulama sunucusu (Caddy'nin üzerine inşa edilmiştir) ve PHP yorumlayıcısını Go web sunucularına yerleştirmek için bir kütüphanedir.
curl https://frankenphp.dev/install.sh | shBaşlayın!
Sadece tek bir komutla canlı ortamdaki gibi bir PHP sunucusu kurun ve çalıştırın!
# Linux veya macOS'ta FrankenPHP'yi yükleyin
curl https://frankenphp.dev/install.sh | sh
# Veya Windows'ta, PowerShell ile
irm https://frankenphp.dev/install.ps1 | iex
# Public/ dizinine hizmet verin
frankenphp php-server -r public/
# Bir komut satırı betiği çalıştırın
frankenphp php-cli script.php# public/ dizinine hizmet verin
docker run -v $PWD:/app/public \
-p 443:443/tcp -p 443:443/udp \
dunglas/frankenphp
# Bir komut satırı betiği çalıştırın
docker run -v $PWD:/app \
dunglas/frankenphp php script.phpAnatomy of a modern PHP server.
Every part was stitched on for a reason. Here's what keeps the creature alive.
The bolts
Automatic HTTPS
Certificates issued, renewed and revoked for you, with Let's Encrypt or ZeroSSL.
The brain
Worker mode
Boots your app once and keeps it in memory, ready in milliseconds.
The stitches
Caddy inside
The official PHP executor sewn into Caddy, with every Caddy module at hand.
One binary. No PHP-FPM.
Worker modu
public/index.php
<?php
// Boot your app once
require __DIR__.'/vendor/autoload.php';
$app = new \App\Kernel();
$app->boot();
$handler = static function () use ($app) {
echo $app->handle($_GET, $_POST, $_COOKIE, $_FILES, $_SERVER);
};
// …then serve request after request
while (\frankenphp_handle_request($handler)) {
gc_collect_cycles();
}Worker komut dosyası
Uygulamanızı bir kez başlatın, bellekte kalır!
Dümdüzilerleyin
Symfony, API Platformu, Laravel tarafından yerel olarak desteklenir...
Basit
Düz eski süper globalleri kullanır: PSR-7'ye gerek yok.
Hızlı
Kıyaslamalarımıza göre, API Platform uygulamalarında FPM'den 3,5 kat daha hızlı.
Verimli
FrankenPHP Go ve C dillerinde yazılmıştır. Go'nun ikonik özelliğine dayanır: goroutines!
Opsiyonel
Uygulamanız, worker moduyla uyumlu olmasa bile olduğu gibi çalıştırılabilir.
Kolay Dağıtım
İşletim sistemi süreci içinde çalışır: bir binary var ve harici servis gerekmez.
Gözlemci
Çalışan, kodunuz değişir değişmez yeniden başlar.
Caddyfile
localhost {
# Sıkıştırmayı etkinleştir (isteğe bağlı)
encode zstd br gzip
# Geçerli dizindeki PHP dosyalarını çalıştırın ve varlıkları sunun
php_server
}Yapılandırması çok kolay!
Üç satırlık yapılandırma: artık Caddy tarafından desteklenen canlı ortamdaki gibi bir PHP sunucusu (otomatik HTTPS, HTTP/3, Brotli sıkıştırma...) başlatmak için ihtiyacınız olan tek şey bu.
- HTTPS ✓
- HTTP/3 ✓
- zstd · br · gzip ✓
- Early Hints ✓
FrankenPHP bir bakışta
Genişletilebilir
PHP 8.2+, çoğu PHP eklentisi ve tüm Caddy modülleri ile uyumludur.
Sadece bir hizmet
Basitlik göz önünde bulundurularak tasarlanmıştır: sadece bir servis, sadece bir binary! FrankenPHP PHP-FPM'e ihtiyaç duymaz, Go web sunucuları için özel olarak hazırlanmış kendi SAPI'sini kullanır.
Kolay dağıtım
Cloud yerel uygulaması bir Docker imajı olarak gönderilir. Kubernetes ve tüm modern cloud platformları ile uyumludur. PHP uygulamanızı tek başına, çalıştırılabilir statik binary olarak paketlemeniz de mümkündür.
Worker modu
Uygulamanızı bir kez başlatın ve bellekte tutun! Birkaç milisaniye içinde gelen istekleri işlemeye hazırdır.
103 Early Hints
Early Hints, web sayfalarınızı %30'a kadar hızlandıracak web teknolojisinin yepyeni bir özelliğidir. FrankenPHP, Early Hints desteğine sahip tek PHP SAPI'dir!
Real-time
Yerleşik Mercure merkezi. PHP uygulamalarınızdan tüm bağlı tarayıcılara olay gönderin, veriyi anında bir JavaScript olayı olarak alırlar!
Brotli, Zstandard ve Gzip sıkıştırma
Modern sıkıştırma formatları kullanıma hazır olarak desteklenir.
Yapılandırılmış günlük kaydı
Günlük kaydınıza daha tanımlı bir format ve ayrıntılar getirin.
Prometheus metrikleri ve izleme
Yerleşik Prometheus desteği!
HTTP/2 ve HTTP/3
HTTPS, HTTP/2 ve HTTP/3 için yerel destek.
HTTPS Otomasyonu
Otomatik HTTPS sertifikası oluşturma, yenileme ve iptal etme.
Zarif yeniden yükleme
Zarif yeniden yüklemeler sayesinde uygulamalarınızı sıfır kesinti süresiyle dağıtın.
Born in a lab. Written in Go.
FrankenPHP is a Caddy module and a library: embed the PHP interpreter in any Go program and serve PHP scripts through net/http.
server, _ := frankenphp.NewServer("public/")
frankenphp.Init(frankenphp.WithServer(server))
defer frankenphp.Shutdown()
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
server.ServeHTTP(w, r)
})Modern PHP Her Zamankinden Daha İyi!
- Son teknoloji ürünü bir web sunucusuna gömülü resmi PHP yürütücüsünü kullanır: Caddy
- HTTP/1.1, HTTP/2 ve HTTP/3 için yerel destek
- Otomatik HTTPS sertifikaları oluşturma ve yenileme (Let's Encrypt veya ZeroSSL)
- PHP dosyalarınızı belge kök dizinine kopyalayın, hepsi bu!
- PHP web uygulamalarınız ve komut satırı araçlarınız için bağımsız, kendi kendine çalıştırılabilir binary dosyalar oluşturun.
- OPcache ve XDebug dahil olmak üzere popüler PHP eklentileri yerel olarak desteklenmektedir!
Need a hand? We've got heart.
Les-Tilleuls.coop, the cooperative behind FrankenPHP, helps teams migrate, host and speed up their PHP apps.