Pausa el temporizador de uso de la CPU

# LuaSandbox::pauseUsageTimer

(PECL luasandbox >= 1.4.0)

LuaSandbox::pauseUsageTimer — Pausa el temporizador de uso de la CPU

### Descripción

public function LuaSandbox::pauseUsageTimer(): bool

Pausa el temporizador de uso de la CPU.

Esto solo tiene efecto cuando se llama desde una retrollamada de Lua. Cuando la ejecución vuelve a Lua, el temporizador se reiniciará automáticamente. Si se realiza una nueva llamada a Lua, el temporizador se reiniciará durante la duración de esa llamada.

Si una retrollamada PHP llama nuevamente a Lua con el temporizador sin pausar, y esa función Lua llama nuevamente a PHP, la segunda llamada PHP no podrá pausar el temporizador. La lógica es que incluso si la segunda llamada PHP evita contar el uso de la CPU contra el límite, la primera llamada sigue contándolo.

### Parámetros

Esta función no contiene ningún parámetro.

### Valores devueltos

Devuelve un bool indicando si el temporizador está ahora en pausa.

### Ejemplos

Ejemplo #1 Manipulando el temporizador de uso

    <?php

    // Crear un nuevo LuaSandbox y definir un límite de CPU
    $sandbox = new LuaSandbox();
    $sandbox->setCPULimit( 1 );

    function doWait( $t ) {
        $end = microtime( true ) + $t;
        while ( microtime( true ) < $end ) {
            // gasta ciclos de CPU
        }
    }

    // Registrar una función de retrollamada 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 "Esto no debería agotar el tiempo...\n";
    $sandbox->loadString( 'php.test()' )->call();

    echo "Esto debería agotar el tiempo.\n";
    try {
        $sandbox->loadString( 'php.test2()' )->call();
        echo "¿No lo hizo?\n";
    } catch ( LuaSandboxTimeoutError $ex ) {
        echo "¡Lo hizo! " . $ex->getMessage() . "\n";
    }

    ?>

El ejemplo anterior mostrará:

    Esto no debería agotar el tiempo...
    Esto debería agotar el tiempo.
    ¡Lo hizo! El tiempo máximo de ejecución para este script fue excedido

### Ver también

- LuaSandbox::setCPULimit() - Define la limitación de tiempo CPU para el entorno Lua
- LuaSandbox::unpauseUsageTimer() - Reanuda el temporizador de uso pausado por LuaSandbox::pauseUsageTimer

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