5 poin oleh xguru 2025-05-31 | 3 komentar | Bagikan ke WhatsApp
  • Modul yang memungkinkan menjalankan aplikasi PHP di dalam aplikasi Node.js dalam proses yang sama, sehingga komunikasi antara Node.js dan PHP dapat dilakukan tanpa koneksi jaringan
    • Memudahkan komunikasi dua arah, arsitektur hibrida, pemanfaatan aset PHP lama, dan migrasi
    • Dengan ini, berbagai arsitektur web app hibrida dapat diwujudkan, seperti mengintegrasikan WordPress dengan frontend Next.js
  • Mendukung baik metode asinkron (handleRequest) maupun metode sinkron (handleRequestSync) (metode sinkron memblokir thread Node.js)
  • Memprioritaskan dukungan untuk lingkungan x64 Linux, x64/arm64 macOS, dan memerlukan instalasi beberapa pustaka sistem terkait PHP
  • Objek HTTP seperti Request/Response/Headers dapat dibuat/dimanipulasi langsung di Node.js sehingga bisa terintegrasi secara alami dengan aplikasi PHP
  • Cara penggunaan
    // Setelah membuat instance `Php`, proses permintaan PHP dengan `handleRequest()`  
    // Gunakan objek `Request`, `Response` untuk menangani data permintaan/respons HTTP secara langsung  
    import { Php, Request } from '@platformatic/php-node'  
    
    const php = new Php()  
    const request = new Request({  
      url: 'http://example.com/foo/bar',  
      headers: { 'X-Test': ['Hello, from Node.js!'] }  
    })  
    const response = await php.handleRequest(request)  
    console.log(response.body.toString())  
    
  • Contoh penggunaan
    • Mengintegrasikan CMS berbasis PHP (WordPress, dll.) dengan frontend Node.js (Next.js, dll.), atau memigrasikan aplikasi PHP lama secara bertahap ke Node.js
    • Cocok untuk komunikasi in-memory tanpa overhead jaringan antar kedua lingkungan, serta untuk API gateway, SSR, dan integrasi backend kustom
  • API
    • Kelas Php
      • new Php(config): dapat menyertakan konfigurasi seperti docroot
      • php.handleRequest(request): memproses permintaan asinkron (mengembalikan Promise)
      • php.handleRequestSync(request): pemrosesan sinkron (memblokir thread)
    • Kelas Request
      • Dapat menentukan HTTP method, url, headers, body
      • Tiap properti dapat diakses langsung (misalnya: request.method, request.body)
    • Kelas Response
      • Memiliki properti seperti status, headers, body, log
      • Dapat dibuat secara manual (berguna untuk pengujian dan penanganan error)
    • Kelas Headers
      • Mendukung beragam metode pengelolaan header HTTP seperti set, add, get, getAll, has, delete
      • Pemrosesan header secara massal dimungkinkan melalui API iterator seperti entries, keys, values, forEach

3 komentar

 
nemorize 2025-05-31

Menurut saya ini bukan opsi yang terlalu menarik...

PHP pada dasarnya juga memakai memori yang cukup besar, dan biaya inisialisasinya juga lumayan mahal, jadi benar-benar perlu pengelolaan yang tepat,
dan jika dijalankan dalam proses yang sama dengan node, apalagi dengan struktur implementasi saat ini yang memasukkan PHP secara utuh ke dalam modul native, bebannya tampak akan jauh lebih besar.

Kalau saya, saya akan tetap menaruh php-fpm sebagai proses terpisah,
dan mungkin menulis klien FastCGI dalam JS untuk menanganinya.

 
letaem77a 2025-05-31

Apakah library ini akan kompatibel dengan baik dengan runtime Node.js di AWS Lambda?

Jika kompatibel, pada akhirnya sepertinya PHP juga bisa dijalankan secara serverless di AWS Lambda.

 
savvykang 2025-05-31

Kalau tidak ada alasan untuk menggunakannya bersamaan dengan Node.js, Anda juga bisa menerapkan runtime PHP di Lambda https://bref.sh