when PHP implements a breakpoint, it needs to split the large file into smaller files, and then a singleUpload . After the transfer is completed in the merge.
Here is the sample code:
split.php Split File Script
<?PHP$FP = fopen ("Socket.zip", "RB"), $filesize = ten; $i = 0; $no = 1;while (!feof ($fp)) { $file = fread ($fp, $filesize) ; $FP 2 = fopen ("./split/socket.port". sprintf ("%04d", $no). ".". $i. " -". ($i + $filesize). ". TMP "," WB "); Fwrite ($fp 2, $file, $filesize); Fclose ($fp 2); $i + = $filesize +1; $no + +;} Fclose ($FP);
merge.php Merging file scripts
<?php$filelist = Glob ('./split/*socket*.tmp '); $filesize = 10;//print_r ($filelist); $mergeFileName = ' merg.zip '; Unlink ($mergeFileName); $FP 2 = fopen ($mergeFileName, "w+"), foreach ($filelist as $k = = $v) { $fp = fopen ($v, "RB"); $content = Fread ($fp, $filesize); Fwrite ($fp 2, $content, $filesize); Unset ($content); Fclose ($FP); echo $k, "\ n";} Fclose ($fp 2);
A complete implementation code:
<?php ini_set ("Memory_limit", "50M");//must, according to the actual situation of your environment as large as possible to prevent error Ini_set ("Max_execution_time", "100"); The file_exists () function checks whether a file or directory exists, returns True if it exists, or false otherwise. The Fread () function reads the file (which can be used safely in binary files). Fread () reads up to length bytes from file pointer files. The FileSize () function returns the size (in bytes) of the specified file. The result of this function is cached. Please use Clearstatcache () to clear the cache. $orgFile = ' fireworks8-chs.exe ';//source file $cacheFileName = ' vbcache ';//split into temporary file Block function cutfile ($fileName, $block) {//Split Global $cacheFileName; if (!file_exists ($fileName)) return false; $num = 1; $file = fopen ($fileName, ' RB '); while ($content = Fread ($file, $block)) {$cacheFile = $cacheFileName. $num + +. '. Dat '; $cfile = fopen ($cacheFile, ' WB '); Fwrite ($cfile, $content); Fclose ($cfile); } fclose ($file); } function Mergefile ($targetFile) {//merge global $cacheFileName; $num = 1; $file = fopen ($targetFile, ' WB '); while ($num ; 0) {$cacheFile = $cacheFileName. $num + +. '. Dat '; if (file_exists ($cacheFile)) {$cfile = fopen ($cacheFile, ' RB '); $content = Fread ($cfile, FileSize ($cacheFile)); Fclose ($ CFile); Fwrite ($file, $content); } else {$num =-1;}} Fclose ($file); }//Call Cutfile ($orgFile, ten * POW (2,20)); Ten * POW (2,20) equals the 10M Pow () function returns x's Y-mergefile (' Ok.exe ');?>