PHP Conference Nagoya 2025

LuaSandbox::setCPULimit

(PECL luasandbox >= 1.0.0)

LuaSandbox::setCPULimitУстанавливает ограничение времени процессора для среды Lua

Описание

public LuaSandbox::setCPULimit(float|bool $limit): void

Устанавливает ограничение времени процессора для среды 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

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

Добавить

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

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