phpseclib - 无限下载

phpseclib - endless downloading

我正在使用 phpseclib 0.3.1 来处理远程 SFTP 服务器。我有一个脚本可以从 SFTP 下载封面图片,将它们保存在我的服务器上并在数据库中进行更新。

我 运行 这个脚本用于 7000 张图像,在将近 10-12 分钟后,看起来脚本已经停止(但最终我发现该脚本进入了无限循环)

经过一番调查,我发现了以下细节:

  1. 函数 get($remote_file, $local_file = false) 来自 SFTP.php 被调用以下载图像文件

  2. 在这个函数中 _get_sftp_packet() 在 while(true) 循环中调用。

  3. 在_get_sftp_packet()中调用了_get_channel_packet(NET_SFTP_CHANNEL);

  4. 并且在_get_channel_packet()中调用了$response = $this->_get_binary_packet();

我的问题是这个 $response 是空字符串。在函数 _get_sftp_packet() 中,此响应的长度用作减量,如果函数 returns 为空字符串(或长度为 0) - 我将永远不会退出 _get_sftp_packet()[=17= 中的循环]

有人遇到过这个问题吗? _get_binary_packet() 函数的空响应意味着什么?

如有任何帮助,我将不胜感激。

这可能是 window 大小处理的问题。一个问题已经修复了一段时间。

你是 运行 0.3.1?最新版本是0.3.10。你好像落后了 5 个版本。