(PECL luasandbox >= 1.0.0)
LuaSandbox::setCPULimit — Устанавливает ограничение времени процессора для среды Lua
Устанавливает ограничение времени процессора для среды Lua.
Если общее пользовательское и системное время, используемое средой после вызова метода, превышает это ограничение, выбрасывается исключение LuaSandboxTimeoutError.
Время, используемое в callback-функциях PHP, включено в лимит.
Установка ограничения по времени для callback-функции во время работы Lua приводит к сбросу таймера или его запуску, если он ещё не был запущен.
Замечание:
В Windows ограничение процессора игнорируется. В операционных системах, которые не поддерживают
CLOCK_THREAD_CPUTIME_ID
, таких как FreeBSD и Mac OS X, будет ограничено фактическое время, а не время процессора.
limit
Ограничение как число с плавающей точкой (float) в секундах или false
, чтобы не ограничивать.
Функция не возвращает значения после выполнения.
Пример #1 Вызов функции Lua
<?php
// создание нового LuaSandbox
$sandbox = new LuaSandbox();
// установка лимита
$sandbox->setCPULimit( 2 );
// запуск кода Lua
$sandbox->loadString( 'while true do end' )->call();
?>
Вывод приведённого примера будет похож на:
PHP Fatal error: Uncaught LuaSandboxTimeoutError: The maximum execution time for this script was exceeded