1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
<?php $no_login = "Y"; $dir = "."; include_once($dir."/_common.php");
if($id_cust==''){ $id_cust = "webhard"; }
$session_key = get_microtime(); //$session_key = "123456789";
$dest = "/tmp/{$session_key}"; @mkdir($dest, G5_DIR_PERMISSION);
//$sql = "select * from webhard where idx in (96,97)"; $sql = "select * from webhard where idx in ($idxs)"; $res = mysql_query($sql,$connect_j3); $cnt = 0; while($info=mysql_fetch_array($res)){ $ori_file = $info['b_realpos']; $des_file = "{$dest}/{$info['b_oriname']}"; copy($ori_file,$des_file); $cnt++; }
if($cnt==0){ exit; }
$zip_file = "{$dest}/{$id_cust}.{$session_key}.zip"; $zip_target = "{$dest}/*.*"; shell_exec("zip -9 {$zip_file} {$zip_target} ");
$filepath = "{$zip_file}"; $original = iconv("utf-8","euckr",$zip_file);
if(preg_match("/msie/i", $_SERVER['HTTP_USER_AGENT']) && preg_match("/5\.5/", $_SERVER['HTTP_USER_AGENT'])) { header("content-type: doesn/matter"); header("content-length: ".filesize("$filepath")); header("content-disposition: attachment; filename=\"$original\""); header("content-transfer-encoding: binary"); } else { header("content-type: file/unknown"); header("content-length: ".filesize("$filepath")); header("content-disposition: attachment; filename=\"$original\""); header("content-description: php generated data"); } header("pragma: no-cache"); header("expires: 0"); flush();
$fp = fopen($filepath, 'rb');
// 4.00 대체 // 서버부하를 줄이려면 print 나 echo 또는 while 문을 이용한 방법보다는 이방법이... //if (!fpassthru($fp)) { // fclose($fp); //}
$download_rate = 10;
while(!feof($fp)) { //echo fread($fp, 100*1024); /* echo fread($fp, 100*1024); flush(); */
print fread($fp, round($download_rate * 1024)); flush(); usleep(1000); } fclose ($fp); flush();
//unlink($zip_file); shell_exec("rm -rf {$dest} "); ?>
|