【发布时间】:2013-02-24 10:11:06
【问题描述】:
我正在使用 ftp_rawlist() 来获取目录中的文件列表:
$files = ftp_rawlist($ftp, "-A " . $ftp_dir);// obtain hidden files without "." and ".."
到目前为止一切顺利。但是有些文件夹包含数千个文件,所以我遇到了内存使用问题:
致命错误:允许的内存大小为 67108864 字节已用尽(试图 在 Y 行的 X 中分配 209855912 字节)
有没有其他方法可以逐行获取 LIST 结果?也许通过 ftp_raw()?
编辑:我不想使用 ini_set('memory_limit', 'xxxM');因为我永远不知道需要多少内存,而且我认为这不是一个好习惯,因为某些主机不允许更改此值。
【问题讨论】:
-
您可以打开套接字连接并发送原始 ftp 命令,并逐行获取输出。但是您仍然需要将其存储在某个地方,因此您需要大量内存。
-
你有例子吗?我会测试它。如果没有其他方法我会尝试将数据写入本地文件。
-
看看phpclasses.org/package/1743-PHP-FTP-client-in-pure-PHP.html它实现了ftp客户端,不依赖ftp扩展
-
@dev-null-dweller 谢谢。我自己进行测试,但它确实是一个自己的项目来实现这一点,所以这门课真的很完美!我在 wordpress 中找到了一个“新”:github.com/WordPress/WordPress/blob/master/wp-admin/includes/… 我会使用它并提供反馈。