LuaSandbox::setCPULimit

(PECL luasandbox >= 1.0.0)

LuaSandbox::setCPULimit设置 Lua 环境的 CPU 时间限制

描述

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

设置 Lua 环境的 CPU 时间限制。

如果环境在调用此方法后使用的总用户时间和系统时间超过此限制,则会抛出 LuaSandboxTimeoutError 异常。

PHP 回调中使用的时间包含在限制内。

在 Lua 运行时从回调中设置时间限制会导致计时器重置,或者如果计时器尚未运行则启动。

注意:

在 Windows 上,将忽略 CPU 限制。在不支持 CLOCK_THREAD_CPUTIME_ID 的操作系统上,例如 FreeBSD 和 Mac OS X,将限制挂钟时间而不是 CPU 时间。

参数

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