phpseclib 获取任何文件的文件结束错误
End of file error for phpseclib for any file get
对于使用 phpseclib 从特定 SFTP 服务器下载的任何文件,我收到 NET_SFTP_STATUS_EOF: End of file
错误。有人问了一个类似的问题 here,但我认为它没有任何解决方案。
奇怪的是,所有文件似乎都正确导入并且文件大小相同,但是,错误仍然产生,这让我有点担心,因为正确导入这些文件至关重要。
我使用的是最新版本的 phpseclib 和 PHP 7.3。我附上了我正在尝试下载的文件 here (which does seem to download correctly but produces this error) and the SFTP dump using define('NET_SSH2_LOGGING', 3)
here。
如能提供有关 phpseclib 产生此错误的任何帮助,我们将不胜感激。
这不是问题。
phpseclib 以 32kb 的块下载文件。 SFTP 客户端发送的每个下载请求都跟随着来自 SFTP 服务器的下载响应。为了加快速度,phpseclib 发送 32x 下载请求,然后读取 32x 下载响应。事实证明,这比交织它们更快(例如发送 1x 下载请求并读取 1x 下载响应)。这可以通过 NET_SFTP_QUEUE_SIZE
常量进行配置。
32kb x 32 = 1mb。所以基本上 phpseclib 以 1mb 的批次发送下载请求。如果文件不恰好介于 x mb - 32kb 和 x mb(其中 x 是整数),则 last 批 32x 下载请求会太多。
理论上 phpseclib 可以在下载文件之前查看文件的大小,以便最后一批的下载请求数是准确的,但是如果您是从设备下载呢?例如。 /dev/null
或 /dev/urandom
或其他什么?那时 stat
会说文件大小为 0。
phpseclib 所做的不是查看文件大小,而是读取直到响应不是下载响应而是下载“状态”。例如。 “文件结尾”。
我可以继续解释为什么下载请求是 32kb 而不是其他大小,或者为什么一次只下载 32x(相对于 64 或其他),但是,足以说明,这是预期的行为,没什么被惊动。
对于使用 phpseclib 从特定 SFTP 服务器下载的任何文件,我收到 NET_SFTP_STATUS_EOF: End of file
错误。有人问了一个类似的问题 here,但我认为它没有任何解决方案。
奇怪的是,所有文件似乎都正确导入并且文件大小相同,但是,错误仍然产生,这让我有点担心,因为正确导入这些文件至关重要。
我使用的是最新版本的 phpseclib 和 PHP 7.3。我附上了我正在尝试下载的文件 here (which does seem to download correctly but produces this error) and the SFTP dump using define('NET_SSH2_LOGGING', 3)
here。
如能提供有关 phpseclib 产生此错误的任何帮助,我们将不胜感激。
这不是问题。
phpseclib 以 32kb 的块下载文件。 SFTP 客户端发送的每个下载请求都跟随着来自 SFTP 服务器的下载响应。为了加快速度,phpseclib 发送 32x 下载请求,然后读取 32x 下载响应。事实证明,这比交织它们更快(例如发送 1x 下载请求并读取 1x 下载响应)。这可以通过 NET_SFTP_QUEUE_SIZE
常量进行配置。
32kb x 32 = 1mb。所以基本上 phpseclib 以 1mb 的批次发送下载请求。如果文件不恰好介于 x mb - 32kb 和 x mb(其中 x 是整数),则 last 批 32x 下载请求会太多。
理论上 phpseclib 可以在下载文件之前查看文件的大小,以便最后一批的下载请求数是准确的,但是如果您是从设备下载呢?例如。 /dev/null
或 /dev/urandom
或其他什么?那时 stat
会说文件大小为 0。
phpseclib 所做的不是查看文件大小,而是读取直到响应不是下载响应而是下载“状态”。例如。 “文件结尾”。
我可以继续解释为什么下载请求是 32kb 而不是其他大小,或者为什么一次只下载 32x(相对于 64 或其他),但是,足以说明,这是预期的行为,没什么被惊动。