Я использую phpseclib 0.3.1 для работы с удаленным SFTP-сервером. У меня есть сценарий, который загружает обложки из SFTP, сохраняет их на моем сервере и делает обновления в базе данных.
Я запускаю этот сценарий для 7000 изображений, и через 10-12 минут он выглядит так, как скрипт остановился (но в конце концов я обнаружил, что этот скрипт вошел в бесконечный цикл)
После некоторого расследования я нашел следующие данные:
функция get($remote_file, $local_file = false)
из SFTP.php вызывается для загрузки файла изображения
В этой функции _get_sftp_packet()
вызывается в while (true).
В _get_sftp_packet () есть вызов _get_channel_packet(NET_SFTP_CHANNEL);
А в _get_channel_packet () есть вызов $response = $this->_get_binary_packet();
Моя проблема в том, что этот $ response – пустая строка. В функции _get_sftp_packet()
длина этого ответа используется как декремент, и если функция возвращает пустую строку (или длину 0) – я никогда не выйду из цикла в _get_sftp_packet()
Кто-нибудь сталкивался с этой проблемой? Какой пустой способ ответа для функции _get_binary_packet()
?
Буду признателен за любую помощь.
Вероятно, это проблема с обработкой размера окна. Проблема, которая исправлена некоторое время.
Вы используете 0.3.1? Последняя версия – 0,3.10. Вы походите на 5 версий.