PHP Conference Japan 2024

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

以秒為單位的 浮點數 限制,或者 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