1

多数のプロセスを起動するリモート サーバー上で bash スクリプトを実行する PHP スクリプトがあります。

 <?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 スクリプトは、シェル スクリプトからのフィードバックを一切必要としません。開始する必要があっただけで、そのことは忘れてしまいます。

私の問題を解決したのは次のとおりです。

 $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 に答える