Php-Wasm
WebAssembly je pozoruhodná technologie. Umožňuje běh binárních programů v různých prostředích, především pak v prohlížečích. Do Wasm se dá kompilovat z různých programovacích jazyků, pro PHP existuje Php-Wasm. To umožňuje spouštět PHP kód v prohlížeči na počítači klienta. Výhoda je mnohem rychlejší odezva, než když se data pro zpracování posílají na server a zpátky, dále pak nezatěžování serveru. Další využití je, pokud spouštěnému kódu nevěříte a nechcete si ho pouštět na server.
Php-Wasm jsem si vyzkoušel na demu PhpShrink:
let highlightShrink;
(async function () {
// momentálně je potřeba použít alfa verzi, vydaná 0.0.8 toto nepodporuje
const { PhpWeb } = await import('https://cdn.jsdelivr.net/npm/php-wasm@0.0.9-alpha-29/PhpWeb.mjs');
const php = new PhpWeb({files: [
// namapujeme URL jako soubor v prostředí Wasm; URL musí vrátit PHP kód nezpracovaný serverem
{name: 'phpShrink.php', url: 'https://raw.githubusercontent.com/vrana/PhpShrink/refs/heads/main/phpShrink.php'}
]});
// výstup a chybový výstup nepoužíváme, tak ho jen pošleme do konzole
php.addEventListener('output', event => console.log(event.detail));
php.addEventListener('error', event => console.error(event.detail));
// zpracuje PHP kód z URL zadaného výše
await php.run('<?php include "./phpShrink.php"; ?>');
// největší magie - PHP funkci zpřístupní do JavaScriptu
highlightShrink = await php.x`function ($input) { return highlight_string(phpShrink($input), true); }`;
shrink();
document.getElementById('input').oninput = shrink;
})();
function shrink() {
document.getElementById('output').innerHTML = highlightShrink(document.getElementById('input').value);
}
Php-Wasm má mnohem širší možnosti, kód se dá definovat i rovnou ve <script type="text/php">
, existuje také CGI umožňující třeba i běh WordPressu v prohlížeči.
Vložit komentář

