SSI/PHP exec 命令在发送回响应时终止,对


SSI/PHP exec commands terminate when the response is send back, right?

假设我有一个使用 exec 的

SSI 脚本,或者一个使用 exec 或 proc_open 的 PHP 脚本,当用户将一些数据从他们的浏览器发送到我的服务器时启动一个进程。我是否正确,当服务器完成处理请求并将响应发送回服务器时,此生成的进程将终止?无论我使用 SSI 还是 PHP,生成的进程都会在此时终止,对吗?

因此,没有办法在单独的请求之间"保持进程活动",所以如果我想在后续请求上与同一进程交互,我需要编写一个守护程序?

实际上,保持一个进程的活动非常简单,我们一直在这样做:

创建一个外壳脚本(wrapper.sh),例如

#!/bin/bash
/path/to/some/process < /dev/zero > "$1" &
echo "Blah"

我们发现在某些系统上需要echo "Blah"

使用 wrapper.sh "/path/to/output/file" 生成进程,它几乎会立即返回 - 在以后的脚本调用中,您可以读取/path/to/output/file以获得结果。