Приостанавливает таймер использования процессора

# LuaSandbox::pauseUsageTimer

(PECL luasandbox >= 1.4.0)

LuaSandbox::pauseUsageTimer — Приостанавливает таймер использования процессора

### Описание

public function LuaSandbox::pauseUsageTimer(): bool

Приостанавливает таймер использования процессора.

Имеет значение только при вызове из callback-функции Lua. Когда выполнение возвращается в Lua, таймер автоматически возобновляет работу. Если будет сделан новый вызов в Lua, таймер будет возобновлён на время этого вызова.

Если callback-функция PHP снова вызывает Lua с не приостановленным таймером, а затем эта функция Lua снова вызывает PHP, второй вызов PHP не сможет приостановить таймер. Логика заключается в том, что даже если второй вызов PHP не учитывает использование процессора в соответствии с ограничением, первый вызов все равно его считает.

### Список параметров

Сигнатура функции не содержит параметров.

### Возвращаемые значения

Возвращает логическое значение (bool), указывающее, приостановлен ли таймер.

### Примеры

Пример #1 Управление таймером использования

    <?php

    // создание нового LuaSandbox и установка лимита процессора
    $sandbox = new LuaSandbox();
    $sandbox->setCPULimit( 1 );

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

    // регистрация новой callback-функции 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 "Это не должно истекать...\n";
    $sandbox->loadString( 'php.test()' )->call();

    echo "Это должно истекать.\n";
    try {
        $sandbox->loadString( 'php.test2()' )->call();
        echo "Это не так?\n";
    } catch ( LuaSandboxTimeoutError $ex ) {
        echo "Это так! " . $ex->getMessage() . "\n";
    }

    ?>

Результат выполнения приведённого примера:

    Это не должно истекать...
    Это должно истекать.
    Это так! The maximum execution time for this script was exceeded

### Смотрите также

- LuaSandbox::setCPULimit() - Устанавливает ограничение времени процессора для среды Lua
- LuaSandbox::unpauseUsageTimer() - Возобновляет таймер, приостановленный LuaSandbox::pauseUsageTimer

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