【发布时间】:2014-01-28 22:21:54
【问题描述】:
我在服务器上有一个 shell 脚本,我从一个 php 页面调用它,它是从数据库流式传输数据的 api 的一部分。
shell 脚本在我的服务器和位于数据库所在的防火墙后面的第三部分服务器之间设置端口绑定。我已经在我们的两个服务器之间设置了无密码的 ssh,当我在终端中运行脚本时执行没有问题,我可以刷新我的 php 页面并从他们的数据库返回数据。
lsof -n -i:3311 | grep LISTEN | awk '{ print $2 }' | uniq | xargs -r kill -9
ssh -fNg -L 3311:127.0.0.1:3306 user@ipaddress
当服务器丢失/丢弃绑定并且我无法再执行 mysql 查询时,php 代码正在尝试重新启动连接
shell_exec("sh start_sever.sh");
但是脚本需要永远运行并且页面超时。但是它确实执行了 shell 脚本,如果我注释掉 shell_exec 行,则返回数据。
你能想到
1) 为什么两台服务器之间的绑定会周期性丢失? 2)为什么 shell_exec 命令会杀死页面 - 像 ls -a 这样的简单命令运行良好。 3) 像运行 cronjob 以每 x 分钟执行一次 shell 脚本这样的解决方案会更好吗
谢谢
【问题讨论】: