登 录
对http://127.0.0.1:20301/x.zip文件进行分段下载,不需要编写服务端。使用 Range 这个参数来进行分段。下面看下代码:
<?php $fp = fsockopen("127.0.0.1", 20301, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br />/n"; } else { # 第一段下载 $out = "GET /x.zip HTTP/1.1/r/n"; $out .= "Range:0-10/r/n"; $out .= "Host: 127.0.0.1/r/n"; $out .= "Connection: Close/r/n/r/n"; fwrite($fp, $out); $start = false; while (!feof($fp)) { $line = fgets($fp); if(!$start && ("/r/n" == $line || "/n" == $line)) { $start = true; continue; } if($start) { fwrite(fopen('./a.zip', 'wb'), $line); } } # 第二段下载 $out = "GET /x.zip HTTP/1.1/r/n"; $out .= "Range:11-/r/n"; $out .= "Host: 127.0.0.1/r/n"; $out .= "Connection: Close/r/n/r/n"; fwrite($fp, $out); $start = false; while (!feof($fp)) { $line = fgets($fp); if(!$start && ("/r/n" == $line || "/n" == $line)) { $start = true; continue; } if($start) { fwrite(fopen('./a.zip', 'wb'), $line); } } fclose($fp); }
每次请求写入文件的时候都去除了头信息。不过测试好像第一段可以写入头信息。可以自己多试试,这个只是个简单例子而已。
抱歉!评论已关闭.