PHPからWASMを使用する
https://1.bp.blogspot.com/-BdIR84ihClk/XobS-LmrwXI/AAAAAAABYDI/TQmzjkPsdxsPdUmJVpIC0vXDgLqKhgf8QCNcBGAsYHQ/s400/animal_zou_white_hakuzou.png
PHPからなんとかWASMの恩恵を活用する手法について
PHPの拡張モジュールを導入する
PHP から WASM を実行するモジュールとして wasmerio/wasmer-php が存在する
wasmerio/wasmer-php: 🐘🕸️ WebAssembly runtime for PHP
この拡張モジュールがインストールされた状態で以下のようにするとPHPからWASMの処理を呼び出せる
code:php
<?php
$module = new \Wasm\Module('path/to/module.wasm');
$instance = $module->instantiate();
$instance->something();
しかしながら、wasmerio/wasmer-php は記載時点でここ二年以上更新されていない。
独自にビルドするのも難しい状態であり事実上使用不可能になっている。
WASIを経由する
どうしてもPHPからWASM の実装を活用したいとなれば、 wasmtime や wasmer などの WASIランタイムを用意して外部コマンドとして実行する手段が取れる。
code:php
<?php
exec('wasmer run path/to/module.wasm', $out, $ret);
任意の値を入力可能である場合は当然ながら、コマンドインジェクションには注意。
外部コマンドを仕様するとなれば、WASM に限らずなんでもできるので若干の裏技感がある。
余談
依存関係を逆転させて WASM 上で PHP を実行する実装もいくつかある
https://github.com/seanmorris/php-wasm
PHPとSQLiteをWebAssembly化し、Webブラウザ上でWordPressを実行可能にしたデモをVMwareが公開 - Publickey
関連
PHPWebのTemplateEngineをWebAssemblyに置き換えてみる | メルカリエンジニアリング
PHPとWebAssembly - Speaker Deck