4

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

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

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

前任:

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

php会将两个命令都发送到linux执行,还是会在第一个命令后重新启动apache,然后我不能执行第二个命令?

谢谢

4

4 回答 4

2

嗯...我在考虑不好的交易。通常,当进程需要继续运行时,告诉其父进程重新启动是一个坏主意。但是,即使这是一个好主意——Apache 在那个上下文中是 PHP 的父进程(做ps -A,你不会看到PHP),我无法想象它会让你重新启动它并同时继续运行.

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

于 2011-06-23T14:20:36.957 回答
1

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

除非您可以处理某种 derp-y 设置,否则您可以设置一个 cron 作业来查找何时需要重新启动服务器(您通过 touch 创建的文件或来自 PHP 的文件),它可以处理外部的所有内容Apache 进程的上下文。

一种肮脏的想法。:(

于 2011-06-23T14:47:08.187 回答
0

我认为为什么 apache restart 是您的命令执行时间过长或消耗大量系统资源并使 apache 子进程退出。尝试使用 fastcgi 模式而不是 mod_php。

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

于 2011-06-23T14:18:08.743 回答
0

将命令放入 shell 脚本并执行该脚本。它不那么复杂,以防万一您可以使用其他工具以及在 apache 重新启动或通过 cron 调用它。

于 2011-06-23T14:22:33.150 回答