phpseclib - 无休止的下载

时间:2015-02-20 23:22:25

标签: php phpseclib

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

我为7000张图片运行此脚本,经过将近10-12分钟,看起来脚本已经停止(但最终我发现脚本进入无限循环)

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

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

  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();

  5. 我的问题是这个$ response是空字符串。在函数_get_sftp_packet()中,此响应的长度用作递减,如果函数返回空字符串(或长度0) - 我将永远不会退出_get_sftp_packet()

    中的循环

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

    我将不胜感激。

1 个答案:

答案 0 :(得分:1)

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

你正在运行0.3.1吗?最新版本是0.3.10。你有5个版本。