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

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?

Или я чего-то не хватает?

Теги:
wget
ssh2-exec

2 ответа

2

Нашел его после много охоты..

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

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

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

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

0

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

  • 0
    Нет, это ничего не изменило. Все еще бомбят. Я должен добавить, что он взрывается примерно через 2 секунды.
  • 0
    Это как второй сет (lame) пытается начать до того, как wget завершит работу. Я попытался добавить сон 10 и подождать до неудачного процесса, но ничего не имеет значения
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню