PHP如何实现即时的下载转发并且不卡内存?

2014-01-15 11:27:39 +08:00
 chsola
U-HACKS有一个加速下载uploaded.to网盘下载的造福服务:
http://u-hacks.net/accountboerse.php
这个是他们完全PHP实现的。
我有ryushare,rapidshare,bitshare,lumfile,freakshare的高级用户,
也想做一个这种加速下载的项目造福大众。
那几个网盘分享的文件没有高级账户完全拖不动,而且一般10$/m略贵。
目前下载过程难度不大,关键是发送。
在获取到一个请求加速的链接以后,我的服务器去拖文件,
怎么能做到边拖文件边发送给用户?
目前最大的问题就是我的下行不一定和用户的下行对等。
采用php+nginx发送在php清空缓冲以后输出到nginx,nginx关了gzip可以直接输出,但是还是会把发送过来的内容放到内存里面,造成内存的堆积。
有没有什么好办法用PHP实现边下边发?
p.s 我没多大的硬盘来做存储 ,只能转发, 为何纠结于PHP实现?我也不知道。
5591 次点击
所在节点    PHP
31 条回复
est
2014-01-15 23:38:58 +08:00
@chsola 距离这个点超过1m是什么意思?
manhere
2014-01-15 23:42:36 +08:00
@est 我感觉是1分钟的意思
est
2014-01-15 23:51:42 +08:00
@manhere @chsola 感觉略复杂了。php里面探测tcp是否idle 恐怕有点麻烦。况且是在nginx后面。不准确啊。
chsola
2014-01-15 23:57:17 +08:00
@est 那个1m是指文件大小...把大文件看为一坨1m包的连续
est
2014-01-15 23:59:22 +08:00
@chsola 感觉没说到同一个位面上 。。。。。。。。。。。。
chsola
2014-01-16 00:52:08 +08:00
@est 我的表达不好...
donwa
2014-01-16 12:46:27 +08:00
@est 说的是把一个大文件分成很多块。一块一块下载。断点续传就是这样的。定义偏移和大小。
donwa
2014-01-16 12:50:03 +08:00
@est 可以模仿mega那种,完全用html5的API实现js可控的下载。甚至可以实现多文件顺序下载。不过前后台架构也比较复杂了。

对这个比较赶兴趣,有相关资料吗?
est
2014-01-16 13:27:34 +08:00
@donwa 断点续传需要客户端浏览器大手术。去看看html5 file blob api 吧。

http://stackoverflow.com/a/20254988/41948

https://mega.co.nz/#blog_1
chsola
2014-01-17 10:48:18 +08:00
@est 我看了看实际上要是纠结php的话用php打个socket发送就可以了,发送过程是阻断式所以我知道用户确实接受完毕了文件的片段,断点续传用socket实现也是有可能的。
http://www.cnblogs.com/funlake/archive/2012/04/06/2435241.html
已经有打好的可以用了~
lwd2136
2016-12-29 22:16:04 +08:00
这个最后实现没?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/97081

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX