我正在检索包含数万个文件的文件夹中的文件列表。我让脚本执行了几个小时,但在这部分后它似乎永远不会进展。有没有办法诊断发生了什么或列表的进展?过去需要几分钟来加载列表,所以我不确定为什么它现在突然挂起。
function EchoDump($echoOut = 0)
{
if($echoOut)
echo str_repeat("<!-- Agent Smith -->", 1000);
else
return str_repeat("<!-- Agent Smith -->", 1000);
}
$sftp_connection = new Net_SFTP($website ,2222);
$login_result = $sftp_connection->login($credentials->login(), $credentials->password());
echo "<pre>Login Status: ".( $login_result ? "Success" : "Failure") ."</pre>";
if($sftp_connection->chdir($photosFolder))
echo "<pre>Changed to $photosFolder</pre>";
else
{
echo "<pre>Failed to change to $photosFolder</pre>";
}
echo "<pre>Downloading List.</pre>";
EchoDump(1);
$rawlist = $sftp_connection->rawlist();
echo "<pre>List downloaded.</pre>";
EchoDump(1);
登录状态:成功
更改为/ vspfiles / photos
下载列表。
然后它将与下载列表一起作为永久的最后输出。
答案 0 :(得分:0)
实时记录可能有助于提供一些见解。您可以通过将define('NET_SSH2_LOGGING', 3);
添加到脚本顶部来启用此功能。一旦你得到它可能会发布在pastebin.org上进行解剖。
那就是说,我会说rawlist()
没有按需返回目录信息。它会归还一切。它不是效率最高的设计,但是在phpseclib 1.0天后,迭代器并不存在。 phpseclib适用于PHP4,所以它必须使用它拥有的东西。当前的主分支需要PHP 5.6并且正在积极开发中,所以这种行为可能会改变,但我们会看到。