php执行多个命令,apache重新启动


php exec multiple commands, apache restart

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

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

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

例如:

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

Php会把这两个命令都发送到linux执行,或者它会在第一个命令之后重新启动apache,然后我就不能执行第二个命令了?

感谢

嗯。。。我的想法很糟糕。一般来说,当进程需要继续运行时,让其父进程重新启动是个坏主意。但是,即使这是一个好主意——Apache是PHP在该上下文中的父进程(做ps -A,你不会看到PHP),我也无法想象它会让你重新启动它并同时保持运行。

我会这样做:如果你能弥补延迟,那么让cron作业查找特定文件是否存在,如果存在,那么执行你需要的两个命令。在更糟糕的情况下,让PHP输出一个包含你想要运行的两个指令的文件,然后让cron运行该文件。

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

除非你可以处理一种derp-y设置,否则你可以设置一个cron作业,当它需要重新启动服务器时(可以是你通过触摸创建的文件,也可以是PHP中的东西),它可以处理Apache进程上下文之外的一切。

一种肮脏的想法(

将命令放入shell脚本中并执行该脚本。它不那么复杂,只是为了以防万一你可以用其他工具调用它,比如在apache重启或通过cron。

我认为apache重启的原因是您的命令执行时间过长或耗费大量系统资源,并导致apache子进程退出。尝试使用fastcgi模式而不是mod_php。

您可以制作一个shell文件来执行两个命令。