[英]How can I handle a endless loop in Lua Extension for PHP?
我将Lua Extension与PHP 7.1一起使用。 不幸的是,我没有找到真正的文档。 只有这个 。 我已经知道我可以使用lua沙箱来限制对lua函数的访问。
但是我该如何限制Lua持续时间呢? 我想在x秒后或x计算周期或x行代码后中止lua解析。
如果我解析这样的内容(无限循环):
<?php
try {
$lua = new Lua();
$lua->eval("
while 1 do
-- something
end
");
} catch (Exception $e) {
$e->getMessage();
}?>
的PHP脚本永远运行。
不可能像您想要的那样覆盖while
循环,但是您可以创建自己的函数(例如While
),该函数接受一个函数并使用count
方法。 就像是
local limit = 500
function While( condition, dofunc )
local count = 0
repeat
count = count + 1
if count > limit then
print( 'Aborting loop: limit (' .. limit .. ') reached.' )
break
end
dofunc()
var = condition()
until not var
end
以及一些示例用法。
local i = 1
local tab = { 'a', 's', 'd', 'f' }
While( function() return tab[i] end, function()
print( tab[i] )
i = i + 1
end )
-- Prints 'a', 's', 'd', 'f'
While( function() return true end, function() print( 'test' ) end )
-- Prints 'test' 500 times, then quits
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.