我必须通过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,然后我就不能执行第二个命令了?
由于
答案 0 :(得分:2)
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。