ssh2_exec进程在完成PHP Bash之前失败

时间:2015-09-24 18:04:41

标签: php bash wget ssh2-exec

我有一个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的问题吗?

或者我错过了什么?

2 个答案:

答案 0 :(得分:2)

经过多次狩猎后发现它..

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

解决了我的问题的原因如下:

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

希望它可以帮助别人。

答案 1 :(得分:0)

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