php exec多个命令,apache重启

时间:2011-06-23 14:07:34

标签: php linux apache exec plesk

我必须通过exec()运行2个命令; 第一个命令是一个包装器调用(Plesk面板)subsription, 第二个也是dns的plesk命令。

注意:执行添加订阅后,apache将重新启动!,

所以我的问题是: 我能以某种方式调用exec,在linux端执行这两个命令而不丢失第二个命令吗?

前:

exec(("/wrapper2 3 --create ... && /wrapper2 4 --update-soa example.com ... ) > /dev/null 2>&1 );

Php会将这两个命令发送到linux执行,否则它会在第一个命令后重启apache,然后我就不能执行第二个命令了?

由于

4 个答案:

答案 0 :(得分:2)

嗯......我想的很糟糕。通常,在进程需要继续运行时,进程告诉其父进程重启是一个坏主意。但是,即使这是一个好主意 - 在这种情况下,Apache是​​PHP的父进程(做ps -A,你不会看到PHP),我无法想象它会让它你重新启动它并继续同时运行。

我会以这种方式处理它:如果你可以桥接延迟,那么让cron作业查找特定文件是否存在,如果存在,则执行你需要它的两个命令。在更糟糕的情况下,让PHP输出一个文件,其中包含您想要运行的两个命令,然后让cron运行该文件。

答案 1 :(得分:1)

根据我的理解,问题在于Apache将成为正在运行的脚本的父级,当Apache关闭时脚本也将如此。

除非您可以处理某种derp-y设置,否则您可以设置一个cron作业,以查找何时需要重新启动服务器(通过触摸创建的文件或来自PHP的文件),这可以处理Apache流程背景之外的所有事情。

一种肮脏的想法。 :(

答案 2 :(得分:0)

我认为为什么apache重启是你的命令执行时间过长或者花费很多系统资源并使apache子进程退出。 尝试使用fastcgi模式而不是mod_php。

您可以创建一个shell文件来执行两个命令。

答案 3 :(得分:0)

将命令放在shell脚本中并执行该脚本。它不那么复杂,以防您可以使用其他工具调用它,例如apache restart或cron。