【发布时间】:2021-06-08 02:35:19
【问题描述】:
我正在使用 phpseclib 连接 sftp 服务器,并使用$sftp->nlist 列出目录。我可以列出所有小目录,但是当列出一个包含超过 8000 个文件的目录时,超出了内存限制。我已经设置了ini_set('memory_limit','128M') 和ini_set('max_execution_time', '300'); 但无法等待请求的响应。
有没有办法一点一点的恢复这个数组,释放内存?
对不起英语不好
ini_set("display_errors",true);
ini_set('memory_limit', '128M');
ini_set('max_execution_time', '300');
set_include_path("/var/www/cremesp.com/_class/API/UnnamedOpenSourceGroup/phpseclib/");
include_once("Net/SFTP.php");
$ftp_server = "*****";
$ftp_username = "*****";
$ftp_password = "*****";
$sftp = new Net_SFTP($ftp_server, *****);
$sftp->login($ftp_username, $ftp_password);
$files_proc = $sftp->nlist("/PROC/");
如我所说,我可以列出其他目录,但是 /PROC 是最大的,大约需要 150 秒才能响应
【问题讨论】:
-
显示代码...
-
$sftp->nlist真的需要多长时间? -
您尝试过什么来解决问题?这可能是系统之间的网络问题吗?
-
您确定是
nlist导致了问题吗?不是稍后在脚本中对文件进行一些处理吗? 8000也不算多。我无法想象它会导致nlist出现问题,除非您的内存限制非常小。 -
我很确定,因为正如我所说,当列出较小的目录时,反馈是即时的。另外,我可以列出“/PROC”,问题是生产中不可行的延迟