phpseclib - 无限下载
phpseclib - endless downloading
我正在使用 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()
中,此响应的长度用作减量,如果函数 returns 为空字符串(或长度为 0) - 我将永远不会退出 _get_sftp_packet()
[=17= 中的循环]
有人遇到过这个问题吗? _get_binary_packet()
函数的空响应意味着什么?
如有任何帮助,我将不胜感激。
这可能是 window 大小处理的问题。一个问题已经修复了一段时间。
你是 运行 0.3.1?最新版本是0.3.10。你好像落后了 5 个版本。
我正在使用 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()
中,此响应的长度用作减量,如果函数 returns 为空字符串(或长度为 0) - 我将永远不会退出 _get_sftp_packet()
[=17= 中的循环]
有人遇到过这个问题吗? _get_binary_packet()
函数的空响应意味着什么?
如有任何帮助,我将不胜感激。
这可能是 window 大小处理的问题。一个问题已经修复了一段时间。
你是 运行 0.3.1?最新版本是0.3.10。你好像落后了 5 个版本。