我编写了一个PHP程序,它在具有许多(大约1000个)目录的远程服务器上执行rawlist功能。 phpseclib SFTP rawlist方法有效,但遍历服务器上的目录树需要12分钟。另一方面,普通的旧FTP原始列表函数(ftp_rawlist)在大约30秒内返回相同的结果。
据我所知,SSH连接会因加密而增加开销,但这似乎过多了。我在Windows Server 2012和Windows 7上运行的PHP 5.3和5.4系统具有相同的SFTP结果。两个安装都启用了mcrypt和gmp。
以下是我一直在测试的程序的基本版本:
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . 'C:/path-to/phpseclib');
include 'Crypt/RSA.php';
include 'Net/SFTP.php';
$rsa = new Crypt_RSA();
$priKey = file_get_contents('C:/path-to/my_private_key.ppk');
$rsa->loadKey($priKey);
$sftp = new Net_SFTP('my_ssh_server_URI', 22);
if (!$sftp->login('my_user_id', $rsa)) {
exit("Login Failed\n");
}
print_r($sftp->rawlist('starting_directory', true));
?>
我只是想知道是否有人遇到与SFTP相同的问题&#34; _list&#34;方法并提出改进性能的解决方法。谢谢。