我在 apache2 中使用外部重写程序 (prg) 运行重写映射,这可能会产生错误并死掉。当重写映射不再运行时,系统显然无法正常运行。
所以我想启动一个简单的包装外壳脚本,它本身执行地图程序(用 php 编写)并在它死时重新启动它:
#!/bin/bash
until /usr/bin/php /somepath/mymap.php; do
echo "map died but i will restart it right away!"
done
如果我在 shell 中手动尝试,它工作正常,但是当由网络服务器启动时它不起作用。
...然后通过其标准输入和标准输出文件句柄与重写引擎通信。对于每个映射函数查找,它将在标准输入上接收作为以换行符结尾的字符串来查找的键。然后它必须将查找到的值作为标准输出上的换行符终止的字符串或四字符字符串“NULL”返回,如果它失败......
原因对我来说似乎很清楚。第一个脚本采用标准输入,但不将其重定向到子脚本。
我想我需要以某种方式定义一个描述符,exec
并正确地重定向脚本的标准输入/标准输出。但是我该怎么做呢?