使用 phpseclib nlist 从 suffix/extension 过滤的 SFTP 文件夹中获取文件
Get files from SFTP folder filtered by suffix/extension with phpseclib nlist
我需要从 SFTP 服务器获取文件,但我只需要 txt
扩展名的文件。如果我循环结果并在本地使用 PHP 进行过滤,则需要花费太多时间。我怎样才能使用 nlist
做到这一点?
我的代码是:
$timeout_sftp = 30;
$ls_directory = $sftp->nlist($sftp_path, false, $timeout_sftp);
SFTP 不允许过滤文件(协议本身,它不是 PHP 中 SFTP 实现的限制)。
所以你所能做的就是检索整个目录的列表并在本地过滤它们。
$files = $sftp->nlist($sftp_path);
foreach ($files as $file)
{
if (preg_match("/\.txt$/i", $file))
{
echo "Found $file\n";
}
}
您当然可以使用 SSH "exec" 通道在服务器上执行 ls *.txt
。但这不再是 SFTP 解决方案,您需要 shell 访问服务器。
$filelist = $ssh->exec("ls *.txt");
我需要从 SFTP 服务器获取文件,但我只需要 txt
扩展名的文件。如果我循环结果并在本地使用 PHP 进行过滤,则需要花费太多时间。我怎样才能使用 nlist
做到这一点?
我的代码是:
$timeout_sftp = 30;
$ls_directory = $sftp->nlist($sftp_path, false, $timeout_sftp);
SFTP 不允许过滤文件(协议本身,它不是 PHP 中 SFTP 实现的限制)。
所以你所能做的就是检索整个目录的列表并在本地过滤它们。
$files = $sftp->nlist($sftp_path);
foreach ($files as $file)
{
if (preg_match("/\.txt$/i", $file))
{
echo "Found $file\n";
}
}
您当然可以使用 SSH "exec" 通道在服务器上执行 ls *.txt
。但这不再是 SFTP 解决方案,您需要 shell 访问服务器。
$filelist = $ssh->exec("ls *.txt");