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.

Jakub Vrána, Seznámení s oblastí, 15.8.2025, diskuse: 0 (nové: 0)

Vložit komentář

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL:

avatar © 2005-2025 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.