2017-02-06 6 views
0

У меня есть долгоживущий процесс, контролируемый супервизором, написанным на php, это команда Laravel, прослушивающая канал redis. Он передает данные из канала на другой сервер через SFTP, используя библиотеку leagure/sftp, когда поступают данные. Проблема, что он работает нормально только в течение примерно 12 часов после начала процесса и начинается после возвращения следующего сообщения об ошибке:Лига/sftp Соединение закрыто преждевременно

Файл: /вар/WWW/HTML/концентратор/поставщик/phpseclib/phpseclib/phpseclib/Net /SSH2.php

Line: 3416

Код: 0

Сообщение: Соединение закрыто преждевременно

Процесс требует перезапуска, чтобы нормально работать еще 12 часов.

У вас есть идеи?

+0

Post файлы журналов. phpseclib ограничивает их, по умолчанию, 1 мб. Вы можете получить их, выполнив 'define ('NET_SSH2_LOGGING', 2)' вверху, а затем '$ ssh-> getLog()', когда вы получите эту ошибку. Возможно, что вы можете сделать, это написать обработчик ошибок, что всякий раз, когда такая ошибка «поймана», создается файл журнала. Затем, как только у вас есть файл журнала, разместите его на pastebin.org. – neubert

ответ

0

Проблема решается путем переподключения каждый раз перед обращением к серверу SFTP:

/** 
      * @var \Illuminate\Filesystem\FilesystemAdapter $disk 
      */ 

      $adapter = $disk->getDriver()->getAdapter(); 
      $adapter->disconnect(); 
      $adapter->connect(); 
0

Это же тема здесь или нет?

[Perl][net::ssh2] How to keep the ssh connection while executing remote command

Другим решением повторно-авторизации на сервере до 12 часов.

+0

Нет, это не похоже на то же самое. И адаптер лиги/sftp не имеет никакого api для reauth. Странно, почему он работает целый день и начинает терять связь к вечеру. – Sergey

 Смежные вопросы

  • Нет связанных вопросов^_^