Basic usage for LuaSandbox

Once you've compiled PHP with LuaSandbox support, you can begin using LuaSandbox to safely run user-provided Lua code.

Example #1 Execute some Lua code

<?php

$sandbox 
= new LuaSandbox;
$sandbox->setMemoryLimit50 1024 1024 );
$sandbox->setCPULimit10 );

// Register some functions in the Lua environment

function frobnosticate$v ) {
    return [ 
$v 42 ];
}

$sandbox->registerLibrary'php', [
    
'frobnosticate' => 'frobnosticate',
    
'output' => function ( $string ) {
        echo 
"$string\n";
    },
    
'error' => function () {
        throw new 
LuaSandboxRuntimeError"Something is wrong" );
    }
] );

// Execute some Lua code, including callbacks into PHP and into Lua

$luaCode = <<<EOF
php.output( "Hello, world" );

return "Hi", function ( v )
    return php.frobnosticate( v + 200 )
end
EOF;

list( 
$hi$frob ) = $sandbox->loadString$luaCode )->call();
assert$frob->call4000 ) === [ 4242 ] );

// PHP-thrown LuaSandboxRuntimeError exceptions can be caught inside Lua

list( $ok$message ) = $sandbox->loadString'return pcall( php.error )' )->call();
assert( !$ok );
assert$message === 'Something is wrong' );

?>

Here you can write a comment


Please enter at least 10 characters.
Loading... Please wait.
* Pflichtangabe
There are no comments available yet.

PHP cURL Tutorial: Using cURL to Make HTTP Requests

cURL is a powerful PHP extension that allows you to communicate with different servers using various protocols, including HTTP, HTTPS, FTP, and more. ...

TheMax

Autor : TheMax
Category: PHP-Tutorials

Midjourney Tutorial - Instructions for beginners

There is an informative video about Midjourney, the tool for creating digital images using artificial intelligence, entitled "Midjourney tutorial in German - instructions for beginners" ...

Mike94

Autor : Mike94
Category: KI Tutorials

Basics of views in MySQL

Views in a MySQL database offer the option of creating a virtual table based on the result of an SQL query. This virtual table can be queried like a normal table without changing the underlying data. ...

admin

Autor : admin
Category: mySQL-Tutorials

Publish a tutorial

Share your knowledge with other developers worldwide

Share your knowledge with other developers worldwide

You are a professional in your field and want to share your knowledge, then sign up now and share it with our PHP community

learn more

Publish a tutorial