我使用phpseclib 0.3.1来处理远程SFTP服务器。我有一个脚本从SFTP下载封面图像,将它们保存在我的服务器上并在数据库中进行更新。
我为7000张图片运行此脚本,经过将近10-12分钟,看起来脚本已经停止(但最终我发现脚本进入无限循环)
经过一番调查,我发现了以下细节:
函数get($remote_file, $local_file = false)
用于下载图像文件
在此函数_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 :(得分:1)
这可能是窗口大小处理的问题。已经修复了一段时间的问题。
你正在运行0.3.1吗?最新版本是0.3.10。你有5个版本。