- PHP saat ini digunakan oleh sekitar 75% situs web di internet
- PHP mungkin bukan bahasa pemrograman yang "seksi", tetapi telah memainkan peran penting sejak lahirnya internet
- Kini PHP bisa dijalankan sepenuhnya di Wasmer dan Wasmer Edge (open beta)
Pentingnya menjalankan PHP di WebAssembly
- Berkat karakteristik WebAssembly, resource yang bisa diakses program dapat dibatasi dengan aman
- PHP dapat dijalankan dengan aman tanpa overhead virtualisasi OS atau hardware
- Tim Wasmer telah menginvestasikan banyak waktu agar PHP berjalan sempurna dan secepat mungkin di WebAssembly
- Dengan mengaktifkan opcode caching di dalam WebAssembly, mereka mendapatkan performa hingga 3 kali lebih cepat
Memberikan skalabilitas ala serverless untuk aplikasi PHP
- Memberikan skalabilitas ala serverless ke semua aplikasi PHP dapat membuka nilai yang sangat besar
- Aplikasi PHP bisa dijalankan di Edge dan hanya membayar sebagian kecil dari harga yang dikenakan penyedia cloud
- Semua aplikasi PHP dapat dijalankan dengan Wasmer, tanpa perlu khawatir aplikasi akan menembus sandbox dan melakukan hal berbahaya yang seharusnya tidak boleh dilakukan
Framework PHP paling populer kini bisa dijalankan di Wasmer dan Wasmer Edge
- WordPress
- Symfony
- Laravel
- Semua template PHP: https://wasmer.io/templates?language=php
- Catatan: dukungan Wasmer Edge untuk volume file system kustom masih dalam proses. Aplikasi yang di-deploy menggunakan SQLite (seperti WordPress atau Symfony) saat ini hanya menyimpan perubahan database di memori dan belum menyimpannya secara permanen
Memaksimalkan WebAssembly dan PHP
- Dengan mengaktifkan opcode caching, WordPress dapat dijalankan 3 kali lebih cepat tanpa modifikasi (dari 600ms menjadi 200ms)
Coba sendiri
Pencapaian teknis
- Membuat PHP bekerja sempurna di WebAssembly pada Wasmer bukanlah hal mudah
- Sepanjang prosesnya, banyak masalah berhasil dipecahkan:
- Menemukan bug samar pada implementasi longjmp/setjmp yang dibutuhkan untuk menggunakan pernyataan try/catch di PHP, di mana stack tertimpa dan tidak dipulihkan dengan benar
- Menemukan dan memperbaiki bug yang membuat panggilan HTTP keluar menjadi 10 kali lebih lambat
- Mengaktifkan PHP opcache secara default untuk mendapatkan waktu eksekusi PHP hingga 3 kali lebih cepat
- Banyak perbaikan kecil pada lapisan virtualisasi file system dan jaringan (IPv6)
- Jika sebelumnya Anda mengikuti posting blog tentang menjalankan WordPress di Wasmer, Anda mungkin tahu bahwa ada banyak modifikasi kode (alias hack) yang harus dilakukan agar perilaku WordPress berubah dan tidak memicu edge case yang menghambat
- Pada rilis Wasmer terbaru, WordPress, Laravel, dan Symfony berjalan di Wasmer tanpa modifikasi kode apa pun
Kecepatan
- Menjalankan PHP pada kecepatan dasar saja tidak cukup; mereka ingin menjalankannya secepat mungkin di WebAssembly
- PHP memiliki modul Zend Opcache yang dapat membuat eksekusi jauh lebih cepat
- Modul opcode caching mengoptimalkan dan menyimpan cache bytecode hasil transformasi source PHP, sehingga menghemat waktu parsing AST untuk file yang sudah diproses
- Karena opcode caching dapat mempercepat jumlah request yang dapat ditangani aplikasi hingga 3 kali, mengaktifkannya di WebAssembly terlihat sebagai langkah yang jelas
- Namun, opcode caching (dan pemuatan modul Zend) dinonaktifkan secara default (karena memerlukan
dlopen, dlsym, dan lainnya yang tidak tersedia di Wasm)
- Mereka lalu memulai misi unik: mengaktifkan opcode caching di PHP
- Setelah riset, mereka menemukan cara baru untuk melakukan static linking, dan meski harus memperbaiki banyak hal dalam prosesnya, akhirnya berhasil menjalankannya
- Waktu WordPress di Wasm tanpa Opcache: ~620ms
- Waktu WordPress di Wasm dengan Opcache aktif: ~205ms
- Hanya dengan mengaktifkan Opcache saja sudah ada peningkatan performa 3 kali!
- Mereka juga menyadari masih ada banyak peningkatan lain agar PHP bisa mendekati performa native (nantikan!)
Membuka lebih banyak peluang
- Ini membuka lebih banyak peluang bagi proyek yang saat ini bergantung pada Emscripten untuk menjalankan PHP di browser, seperti WordPress playground
- Proyek seperti ini bisa dikemas agar berjalan baik di browser maupun di Edge
- Mereka sedang menyiapkan pendekatan yang benar-benar revolusioner untuk cold-start (Cloudflare & Fly.io, kami melihat kalian!)
- Masa yang sangat menarik sedang mendekat untuk pasar Edge
2 komentar
Secara pribadi, menurut saya cukup luar biasa dan menarik bahwa PHP masih digunakan dengan sangat aktif hingga sekarang. Hehe, setelah melewati masa ketika reputasinya buruk, katanya sekarang sudah banyak berubah, jadi saya juga jadi kepikiran untuk mencoba memakai PHP sekali lagi.
Baik Hacker News maupun GeekNews punya banyak orang yang tidak suka PHP, hehe
Tapi saya rasa selama teknologi web tidak benar-benar digantikan sepenuhnya oleh sesuatu yang lain, PHP akan terus digunakan.
Menurut saya, jangan terlalu fokus pada "bahasa", melainkan melihatnya sebagai salah satu teknologi yang cocok untuk "web".