LuaSandbox::pauseUsageTimer

(PECL luasandbox >= 1.4.0)

LuaSandbox::pauseUsageTimer — Pause le minuteur d'utilisation du CPU

Description

public function LuaSandbox::pauseUsageTimer(): bool

Pause le minuteur d'utilisation du CPU.

Ceci n'a d'effet que lorsqu'il est appelé depuis un rappel de Lua. Lorsque l'exécution revient à Lua, le minuteur sera automatiquement relancé. Si un nouvel appel est fait à Lua, le minuteur sera relancé pour la durée de cet appel.

Si un rappel PHP appelle Ă  nouveau Lua avec le minuteur non mis en pause, et que cette fonction Lua appelle Ă  nouveau PHP, le second appel PHP ne pourra pas mettre en pause le minuteur. La logique est que mĂȘme si le second appel PHP Ă©viterait de compter l'utilisation du CPU contre la limite, le premier appel le compte toujours.

Liste de paramĂštres

Cette fonction ne contient aucun paramĂštre.

Valeurs de retour

Renvoie un bool indiquant si le minuteur est maintenant en pause.

Exemples

Exemple #1 Manipulation du minuteur d'utilisation

<?php

// créer un nouveau LuaSandbox et définir une limite CPU
$sandbox = new LuaSandbox();
$sandbox->setCPULimit( 1 );

function
doWait( $t ) {
$end = microtime( true ) + $t;
while (
microtime( true ) < $end ) {
// waste CPU cycles
}
}

// Enregistrer une fonction de rappel PHP
$sandbox->registerLibrary( 'php', [
'test' => function () use ( $sandbox ) {
$sandbox->pauseUsageTimer();
doWait( 5 );

$sandbox->unpauseUsageTimer();
doWait( 0.1 );
},
'test2' => function () use ( $sandbox ) {
$sandbox->pauseUsageTimer();
$sandbox->unpauseUsageTimer();
doWait( 1.1 );
}
] );

echo
"This should not time out...\n";
$sandbox->loadString( 'php.test()' )->call();

echo
"This should time out.\n";
try {
$sandbox->loadString( 'php.test2()' )->call();
echo
"It did not?\n";
} catch (
LuaSandboxTimeoutError $ex ) {
echo
"It did! " . $ex->getMessage() . "\n";
}

?>

L'exemple ci-dessus va afficher :

This should not time out...
This should time out.
It did! The maximum execution time for this script was exceeded

Voir aussi

add a note

User Contributed Notes

There are no user contributed notes for this page.