1

我有一个 PHP 脚本,它在触发多个进程的远程服务器上执行 bash 脚本。

 <?php   
 $connection = ssh2_connect('address1.com', 22);
 ssh2_auth_password($connection, 'user', 'pass');

 $stream = ssh2_exec($connection, '/root/incoming/process.sh');
 ?>

bash 脚本 process.sh 在远程服务器上本地执行时工作正常,没有问题。

 #!/bin/bash

 wget -O /root/incoming/myfile.mp3 http://address2.com/myfile.mp3;

 lame --decode /root/incoming/myfile.mp3 - | /usr/settings/stereo_tool_cmd_64 - - -s /usr/settings/setting.sts | lame -b 128 - /var/www/processed/myfile.mp3

但是当我尝试使用 PHP 脚本远程执行它时,它会在第一个进程 (wget) 的各个阶段崩溃。它甚至没有完成 wget 下载,在传输的随机阶段停止。

这是 PHP ssh2_exec 的问题吗?

还是我错过了什么?

4

2 回答 2

2

找了好久才找到的。。

我的 PHP 脚本不需要来自 shell 脚本的任何反馈,我只需要启动它并忘记它。

解决我的问题的是以下内容:

 $stream = ssh2_exec($connection, "/root/incoming/process.sh &> /dev/null &");

希望它可以帮助别人。

于 2015-09-25T09:55:18.057 回答
0

添加set_time_limit ( 0 );到脚本的开头。PHP 通常默认在 30 秒后超时。

于 2015-09-24T18:06:41.033 回答