За последние 24 часа нас посетили 37259 программистов и 7910 роботов. Сейчас ищут 1782 программиста ...

ssh2_scp_send иногда зависает при отправке файла

Тема в разделе "PHP для новичков", создана пользователем miketm, 23 май 2023.

  1. miketm

    miketm Активный пользователь

    С нами с:
    29 июн 2015
    Сообщения:
    22
    Симпатии:
    0
    Друзья. Подскажите, пожалуйста, как побороть проблему.

    Исходные данные: Windows Server 2012 R2
    PHP 7.4.26
    php_ssh2.dll версии 7.4.13 дистрибутив версии 1.3.1, взятый тут: https://pecl.php.net/package/ssh2

    Проблема: функция ssh2_scp_send при отправке на удаленный сервер по непонятным причинам иногда намертво зависает

    Подробное описание: есть удаленный сервер, на который я периодически отправляю разные файлы.
    Файлы разного размера, но не супер большие: от 100 кб до 10 Мб.

    В 99.9% процентов случаев все проходит гладко: маленькие файлы загружаются моментально, большие - чуть подольше, но тоже успешно.
    Но вот проблема, иногда, т.е. реально очень не часто после вызова ssh2_scp_send загрузка намертво зависает.
    Почему это происходит - понять не могу. Но основная беда в том, что я не знаю обходного решения.

    Меня даже вполне бы устроило грохать скрипт, если он выполняется больше N секунд и для этого я пытался
    применить set_time_limit(), но потом понял, что это не помогает (если зависание случилось на ssh2_scp_send, то
    set_time_limit() не отстреливает скрипт). И если грохнуть скрипт вручную, то все сразу же продолжает работать.

    Фрагмент кода я привожу ниже.

    PS
    К сожалению, получить диагностическую информацию с сервера, на который осуществляется загрузка, не представляется возможным.

    PPS
    Из забавного. Этот самый вопрос я попытался задать GPT-боту и он мне с уверенностью отвечает, что
    функция ssh2_scp_send в последней версии библиотеки имеет параметр "таймаут" (6ой по счету), но я нигде не нашел
    информации на этот счет и, как ожидалось, если задать в ssh2_scp_send больше 4х параметров, появляется
    соответствующая диагностика о том, что параметров не может быть больше 4. Похоже GPT-бот это выдумал :)

    Буду благодарен за любые рекомендации, быть может есть другие библиотеки, где таких проблем нет?
     
  2. miketm

    miketm Активный пользователь

    С нами с:
    29 июн 2015
    Сообщения:
    22
    Симпатии:
    0