PHP 8.4.1 Released!

LuaSandbox::pauseUsageTimer

(PECL luasandbox >= 1.4.0)

LuaSandbox::pauseUsageTimerPause le minuteur d'utilisation du CPU

Description

public 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 Manipulating the usage timer

<?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.
To Top