php shell_exec在后台一次执行多个命令

时间:2011-06-19 13:37:20

标签: php linux plesk

我在php / linux中遇到问题,如下所述:

我必须通过shell_exec执行linux命令(plesk cli命令订阅webspace-off)。

问题是,当我从php执行此操作时,它可以正常工作,但重新启动apache,导致空白页面,而apache重新启动。

要摆脱这个问题,我必须在后台调用那个shell_exec,但是会有延迟(预期结果:加载网页,4秒后运行linux脚本。)

我做了一些尝试,如:

shell_exec("sleep 4 && /var/www/vhosts/site.com/httpdocs/wrapper2 3  --webspace-off ".$domain_name." &");

但是php会等待响应。

不知怎的,我需要睡觉执行linux命令,所有这一切都必须在bg中运行。 并且不要等待回应。

由于

1 个答案:

答案 0 :(得分:7)

您应该尝试使用exec而不是shell_exec,并将所有输出重定向到/dev/null。类似的东西:

exec("(sleep 4 && ... --webspace-off ".$domain_name.") > /dev/null 2>&1 &");

(注意命令周围的():你需要捕获sleep和你的包装器的输出流。)

修改:并使真实确保您验证$domain_name。没有验证和

$domain_name = "; rm -rf ...";
你有麻烦......