我有一个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的问题吗?
或者我错过了什么?
答案 0 :(得分:2)
经过多次狩猎后发现它..
我的PHP脚本不需要shell脚本的任何反馈,我只需要启动它并忘记它。
解决了我的问题的原因如下:
$stream = ssh2_exec($connection, "/root/incoming/process.sh &> /dev/null &");
希望它可以帮助别人。
答案 1 :(得分:0)
将set_time_limit ( 0 );
添加到脚本的开头。 PHP通常默认在30秒后超时。