在后台同时执行多个PHP shell_exec命令

6

我有一个与php/linux相关的问题,如下所述:

我需要通过shell_exec执行linux命令(plesk cli command subscription 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命令的执行,并且所有这些都必须在后台运行,而且不会等待响应。

谢谢

1个回答

10
你应该尝试使用exec而不是shell_exec,并将所有输出重定向到/dev/null。类似这样:
exec("(sleep 4 && ... --webspace-off ".$domain_name.") > /dev/null 2>&1 &");

(注意命令周围的():您需要捕获sleep和包装器的输出流。)
编辑:确保验证$domain_name。没有验证且带有...
$domain_name = "; rm -rf ...";

你有麻烦了...


将所有输出扔到/dev/null真是救了我的一晚!谢谢! - parse

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接