Процесс ssh2_exec завершается неудачно до завершения PHP Bash

У меня есть сценарий 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?

Или я что-то упустил?

1

Решение

Нашел его после большой охоты ..

Мой PHP-скрипт не требует обратной связи со скриптом оболочки, мне просто нужно было его запустить и забыть об этом.

То, что решило мою проблему, было следующим:

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

Надеюсь, это поможет кому-то еще.

2

Другие решения

добавлять set_time_limit ( 0 ); к началу сценария. По умолчанию PHP обычно отключается через 30 секунд.

0

По вопросам рекламы [email protected]