PHP 8.4.1 Released!

LuaSandbox::pauseUsageTimer

(PECL luasandbox >= 1.4.0)

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

Описание

public 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

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

Добавить

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

Пользователи ещё не добавляли примечания для страницы
To Top