PHP實現(xiàn)斷點續(xù)傳亂序合并文件的方法
本文實例講述了PHP實現(xiàn)斷點續(xù)傳亂序合并文件的方法。分享給大家供大家參考,具體如下:
分割成多個文件發(fā)送,由于網(wǎng)絡(luò)原因并不上先發(fā)就能發(fā)接收到。所以我們不能按順序合并。
分割文件源碼前面一篇文章《PHP斷點續(xù)傳之文件分割合并》
merge2.php
<?php $fileTotaiSize = filesize("socket.zip"); $filelist = glob('./split/*socket*.tmp'); $filesize = 3096; //打亂讀取文件順序 shuffle($filelist); $mergeFileName = 'merg2.zip'; if(is_file($mergeFileName)) { unlink($mergeFileName); } $fp2 = fopen($mergeFileName,"w+"); //創(chuàng)建空白文件 $str = str_pad('',$fileTotaiSize); fwrite($fp2, $str, $fileTotaiSize); foreach($filelist as $k => $v) { $tmp = explode('.',$v); $len = explode('-', $tmp[3]); $offset = (int) $len[0]; $fp = fopen($v, "rb"); $content = fread($fp, $filesize); echo $offset, "\n"; fseek($fp2, $offset); fwrite($fp2, $content, strlen($content)); unset($content); fclose($fp); } fclose($fp2);
補充:前文中的分割文件split.php如下:
<?php $fp = fopen("socket.zip", "rb"); $filesize = 10; $i = 0; $no = 1; while(!feof($fp)) { $file = fread($fp, $filesize); $fp2 = fopen("./split/socket.port".sprintf("%04d",$no).".".$i."-".($i+$filesize).".tmp", "wb"); fwrite($fp2, $file, $filesize); fclose($fp2); $i+=$filesize+1; $no++; } fclose($fp);
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP目錄操作技巧匯總》、《php文件操作總結(jié)》、《PHP常用遍歷算法與技巧總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計算法總結(jié)》、《php socket用法總結(jié)》及《PHP網(wǎng)絡(luò)編程技巧總結(jié)》
希望本文所述對大家PHP程序設(shè)計有所幫助。
相關(guān)文章
用php來限制每個ip每天瀏覽頁面數(shù)量的實現(xiàn)思路
這篇文章主要介紹了用php來限制每個ip每天瀏覽頁面數(shù)量的實現(xiàn)思路,需要的朋友可以參考下2015-02-02當(dāng)前比較流行的兩款PHP加密、解密工具Zend Guard和iconCube介紹
這篇文章主要介紹了當(dāng)前比較流行的兩款PHP加密、解密工具Zend Guard和iconCube介紹,本文還給出了iconCube的安裝教程,需要的朋友可以參考下2014-09-09