如何解决php中通过ssh2_scp_recv获取文件
对于一个项目,我需要检索 sftp 服务器上的所有文件,所有文件的总大小约为 100 mb。我开发了一个脚本,它使用 ssh2 库和 fread 来获取所有文件,但需要大约 10 分钟才能获取所有内容。我尝试了 ssh2_scp_recv,希望有更好的性能,如下代码所示,但脚本运行速度相当快,没有获取任何文件,就好像提到的函数从未运行过一样。
function get_sftp_content(){
$url = 'someurl.com';
$port = 22;
$username = "user";
$password = "password";
// Make our connection
$connection = ssh2_connect($url);
// Authenticate
if (!ssh2_auth_password($connection,$username,$password)) throw new Exception('Unable to connect.');
// Create our SFTP resource
if (!$sftp = ssh2_sftp($connection)) throw new Exception('Unable to create SFTP connection.');
$localDir = '/ftp_files';
$remoteDir = '/download';
// download all the files
$files = scandir('ssh2.sftp://' . $sftp . $remoteDir);
//echo '<pre>' . print_r($files,true) . '</pre>' ;
if (!empty($files)) {
foreach ($files as $file) {
ssh2_scp_recv($connection,$remoteDir.'/'.$file,$localDir.'/'.$file);
}
}
}
get_sftp_content();
关于为什么会发生这种情况的任何想法,是否有更快的替代方法来获取所有文件,而无需重复使用 phpseclib?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。