Pause le minuteur d'utilisation du CPU

# 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

- LuaSandbox::setCPULimit() - Définit la limite de temps CPU pour l'environnement Lua
- LuaSandbox::unpauseUsageTimer() - Relance le minuteur mis en pause par LuaSandbox::pauseUsageTimer

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open