在PHP中限制shell_script的执行时间

时间:2012-07-16 20:52:01

标签: php linux shell shell-exec

我使用PHP脚本在Linux中调用shell脚本,我执行以下操作:

shell_exec('./shell_script.sh');

之后PHP脚本继续...所有这些都按预期工作。

但是,有时shell_script无论出于何种原因都没有完成执行,所以这里有一个问题:

如何在执行x个时间后终止shell_script.sh? 这应该以某种方式在PHP本身处理(不要认为在这种情况下可能)或者应该在.sh本身中完成吗?

所以就在:

之后
#!/bin/bash
<。>在.sh的开头,如果执行时间超过20秒,我可以把它终止吗?

2 个答案:

答案 0 :(得分:3)

我不知道你是否可以在php中做到这一点,并且在bash中可能存在更好的解决方案,但这是你可以做的:

这是你可以在#!/bin/bash之后立即在20秒后杀死当前脚本的行:

(sleep 20 && kill $$) &

bash用当前脚本的pid替换$$。

答案 1 :(得分:1)

您可以使用以下内容:

# start timer
( sleep $TIMEOUT ; kill $$ ) 2>/dev/null &
TIMER_PID=$!

# "payload"
echo hello

# cancel timer
kill $TIMER_PID

YMMV虽然,在我的测试中,应该取消定时器的部分有时不会终止sleep,程序会等到超时结束。