我在PHP 7.1中使用了Lua Extension。不幸的是,我沒有找到真正的文檔。只有this。我已經知道我可以使用lua沙箱來限制對lua函數的訪問。如何在Lua Extension for PHP中處理無限循環?
但我如何限制lua持續時間?我想在x秒後或x計算週期或x行代碼後中止lua解析。
如果我分析是這樣的(無限循環):
<?php
try {
$lua = new Lua();
$lua->eval("
while 1 do
-- something
end
");
} catch (Exception $e) {
$e->getMessage();
}?>
php腳本將永遠運行下去。
不會有確切的時間附加到它,但你可以在循環外創建一個變量,比如'count = 0'或什麼的,然後在每個循環中增加它。如果它超過了某個值,那麼就打破循環。你也可以考慮使用庫(如[this](https://github.com/APItools/sandbox.lua)),或者至少看看它是如何實現的 – DavisDude
謝謝你的回答。 lua代碼將由用戶編寫腳本。我不能直接處理它。 php lua擴展不支持協程。但是您的sandbox.lua解決方案使用了協程。它也沒有工作。我想我必須看看擴展代碼本身。 – Giraffe