对phpseclib中的递归原始列表请求的响应缓慢

问题描述 投票:0回答:1

我编写了一个PHP程序,该程序在具有许多(大约1000个)目录的远程服务器上执行原始列表功能。 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“ _list”方法时遇到了相同的问题,并提出了一种解决方法来提高性能。谢谢。

phpseclib
1个回答
-1
投票

TRY ftp_pasv($ conn_id,true);

© www.soinside.com 2019 - 2024. All rights reserved.