下载大量文件

时间:2010-10-25 20:20:15

标签: ftp zip gzipstream ziparchive

我正在为潜在客户研究解决方案。他们要求能够从他们的在线目录下载大量的MP3(1000+)。

我已经研究/测试了使用ZipArchive构建包含所有MP3的zip,但遇到明显的内存泄漏问题,这些问题已经解决了这个问题。

我现在正试图开箱即用。

一个想法是为它们创建一个FTP队列或Torrent类型的下载链接。那里有什么可以拉掉这样的东西吗?

任何帮助或建议的方向将不胜感激!谢谢!

编辑:以下是我们正在努力实现的整体流程/目标。

客户端为TV / Flim放置创建音乐。他们维护在线目录和他们发送给潜在买家的本地副本。在线目录和离线目录需要相互镜像。问题是,他们有多个办事处,必须使用从许多不同地点添加到在线目录中的新文件更新其本地副本

示例:East Coast用户使用100个新文件更新目录。 West Coast用户需要使用从在线目录中检索的新文件更新离线目录。

我们希望根据用户在MySQL中维护的下载历史记录,创建每个用户更新目录所需文件的自定义zip文件。我们正在测试ZipArchive,但我们似乎无法构建超过175 MEG的Zips(给予或接受)。我们正在测试ZipStreaming但是遇到了一些问题。

我希望这能够清除我们面临的总体目标和问题。

2 个答案:

答案 0 :(得分:1)

GNU wget? 它可以下载递归。只需给wget一个服务器上所有文件的列表,例如。  http://www.example.org/filelist.html包含像file1.mp3,file2.mp3等链接(apache通常会生成这样一个索引文件,自动在没有index.html / php的目录中调用它。

http://linux.die.net/man/1/wget

答案 1 :(得分:0)

坦率地说,我无法从你的帖子中找出实际问题/问题。如果您正在寻找最小化网络负载,那么您需要记住MP3文件压缩不好,因为它们已经被压缩(尽可能不好,但很好)。如果您正在寻找传输,那么任何文件传输协议都将执行(FTP,SFTP,HTTP,WebDAV)。

如果您需要灵活性和功能,我建议使用SFTP:这是一个用于远程文件系统访问的协议,因此除了“获取文件”操作外,它还有许多有用的操作,包括机器可读目录列表(并非总是可用于FTP和标准HTTP中不可用),内置ZLib压缩,内置恢复文件传输的可能性和更多奖金。 HTTP也有ZLib压缩,但这个并不总是可用。

更新:您的方法不关心客户端上真正的可用内容,您将根据您对客户端的(可能不正确的)知识准备ZIP文件。

如果客户端和服务器都是您开发的应用程序,那么您应该使用RSync协议或类似的东西在线更新数据(不使用任何ZIP文件)并下载客户端上缺少的文件。如果无法在客户端和服务器之间进行直接通信,则可以使客户端将其状态发送到服务器,服务器将在此之后准备单个程序包。至于ZIP功能 - 只有在使用批量更新时才需要它(客户端和服务器之间没有实时通信)。我不知道你正在使用什么技术,但如果你的问题是ZIP组件,你可以使用其他东西进行数据打包 - 不同的ZIP组件(对于.NET和VCL,我们有{{ 3}})或其他一些打包解决方案(例如,我们的ZIP component产品没有大小限制)。不幸的是,我不知道类似RSync的实现可用作组件。