deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

Değiştirilmemiş Zend PHP motoru ESP32 mikrodenetleyicilerde 1.0.0 sürümüne ulaştı

PHP on ESP32, 1.0.0 sürümünü yayınladı: php.net'in dağıttığı değiştirilmemiş Zend motoru, yaklaşık 4 dolarlık kartlarda bare metal olarak çalışacak şekilde çapraz derlendi; standart kütüphane, OPcache ve istek başına HTTP sunumu dahil.

Değiştirilmemiş Zend PHP motoru ESP32 mikrodenetleyicilerde 1.0.0 sürümüne ulaştı

4 dolarlık bir çipte gerçek PHP

PHP-on-ESP32 projesi ilk resmi sürümü olan 1.0.0'ı yayınladı; böylece gerçek PHP yorumlayıcısı — php.net'in dağıttığı, değiştirilmemiş Zend motoru — Espressif'in ESP32 mikrodenetleyici ailesine geldi. 9 Eylül'de dev.to'da yayımlanan duyuruya göre motorun C kaynak kodu, çipin kendi toolchain'leriyle (ESP32-P4 için riscv32-esp-elf, ESP32-S3 için xtensa-esp32s3-elf) derleniyor ve PHP'nin resmi embed SAPI arayüzü, yani herhangi bir host C programının kullanacağı arayüz üzerinden bağlanıyor. Altta bir işletim sistemi yok, transpiler yok, budanmış bir lehçe de yok: bir betik kaynaktan token'lara, AST'ye, opcode'lara giden olağan yolu izliyor ve kartın CPU'sunda yerel olarak çalışıyor.

Motorun tamamı derlendiği için dilin tüm yüzeyi mevcut — sınıflar, closure'lar, generator'lar, enum'lar, tipli özellikler, exception'lar — ve ext/standard, PCRE, JSON, hashing, SPL, reflection ve CSPRNG'yi kapsayan, hep açık bir standart kütüphane de cabası.

1.0.0 neler sunuyor

İsteğe bağlı eklentiler proje bazında ekleniyor. dev.to yazısı mbstring, filter, tokenizer ve kart üzerinde ya da bellek içi bir veritabanı için PDO SQLite'ı listeliyor; web sunucusu modu için bir session uygulaması; yeniden başlatmalarda veriyi koruyan, çipin NVS'sine dayalı bir key-value deposu ve onun RAM'de yaşayan uçucu ikizi; ayrıca firmware'e gömülüp $_ENV ve getenv() üzerinden açığa çıkan .env tarzı yapılandırma. Zend OPcache statik biçimde, JIT olmadan taşınmış; bytecode'u önbelleğe alıyor ki bir istek her seferinde bir framework'u yeniden derlemek zorunda kalmasın. TLS için iki OpenSSL build'i var: kompakt, mbedTLS tabanlı bir seçenek ve tam bir OpenSSL 3.0 seçeneği.

Donanım erişimi, gpio_mode, gpio_write, gpio_read ve delay sağlayan küçük bir yerleşik eklentiden geliyor; tekrarlayan döngü C'de çalıştığı için kartın watchdog'u aç kalmadığından, Arduino tarzı setup()/loop() yaşam döngüsüyle birlikte.

Ölçülmüş performans

Duyurudaki benchmark'lar — 2 MB PSRAM'li, 80 MHz PSRAM ve 160 MHz CPU ile PHP 8.4.25 çalıştıran bir ESP32-S3-Zero "Super Mini" üzerinde alınmış — sınırları net gösteriyor. Boot'tan sonra 744,7 KB PSRAM ve 183,4 KB dahili RAM boştu. 167 satırlık, 4,2 KB'lık bir kaynak dosyayı derlemek 22,4 KB PSRAM tüketti ve 1.090 satırlık bir working set 403,1 KB yer kapladı.

GPIO sayıları yorumlayıcı vergisini çıplak biçimde gösteriyor: PHP'de sıkı bir döngü saniyede yaklaşık 309.687 yazma yaptı (yazma başına 3.229 ns), buna karşılık yerel C kabaca saniyede 2,8 milyon yazmaya ulaştı — yaklaşık dokuz kat daha hızlı. LED yakıp söndürmeye ve orta düzey mantığa yeter; sert gerçek zamanlı pin işlerine açıkça yaramıyor.

Web sunucusu olarak kart

Ağa bağlı donanımda firmware, her isteği taze bir PHP çalıştırmasına aktaran bir HTTP sunucusu başlatabiliyor; $_SERVER, $_GET, $_POST, cookie'ler ve session'lar dolduruluyor, betik çıktısı yanıt gövdesini oluşturuyor. dev.to'ya göre stok Laravel ve Symfony, 32 MB PSRAM'li bir ESP32-P4 üzerinde sayfaları bu şekilde sunuyor — fork ya da budanmış build'ler değil.

Her ESP32-S3 çipte WiFi bulunduğundan bir kart kendi erişim noktasını oluşturup doğrudan sayfa sunabiliyor. Yerleşik örneklerden biri bir AP önyüklüyor ve telefondan kart üzerindeki RGB LED'i süren canlı bir PHP sayfası sunuyor — arada bulut servisi, broker ya da yardımcı uygulama yok.

Gereksinimler ve araçlar

Bir çipin uygunluğunu iki etken belirliyor: runtime heap megabyte'lara ihtiyaç duyduğundan harici PSRAM ve yaklaşık 3 MB'lık firmware imajı için en az 8 MB flash. Çekirdek mimarisi önemli değil — taşınabilir VM hem Xtensa hem RISC-V üzerinde derleniyor. PHP 8.3.33, 8.4.25 ve 8.5.10 bugün derlenebiliyor, proje bazında seçilebiliyor ve PSRAM'li bir giriş seviyesi ESP32-S3 kart yaklaşık 4 dolar.

Desteklenen iş akışı phpflash: tek binary'lik bir CLI olan bu araç bir proje iskeleti oluşturuyor, build'i yönetiyor, bağlı kartı flash'lıyor ve seri konsolu açıyor — betiği düzenlemeden donanımda çalıştığını görmeye kısa bir döngü.

Neden önemli

Projenin yazarı, 1.0.0'ın üretim dağıtımından çok hobi kullanımına yönelik bir kilometre taşı olduğu konusunda açık — tatilde başlanan bir yan proje olarak doğmuş. Yine de sürüm gerçek bir engeli kaldırıyor: PHP'yi, standart kütüphanesini ve istek başına betik modelini zaten bilen geliştiriciler, artık C ya da yeni bir gömülü toolchain öğrenmeden mikrodenetleyicileri hedefleyebiliyor. Kendi WiFi ağı üzerinden gerçek bir Laravel sayfası sunan 4 dolarlık bir kart, web geliştirme ile gömülü geliştirme arasındaki sınırın sanıldığından ince olduğunun çarpıcı bir kanıtı; ve kamu yol haritası projenin bu sınırı itmeye devam etmeyi amaçladığını gösteriyor.

  • #php
  • #esp32
  • #embedded
  • #microcontrollers
  • #zend-engine