国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php中解壓壓縮文件實例源碼

2024-05-04 21:48:24
字體:
來源:轉載
供稿:網友

仔細的研究了一下,原來用php寫的解壓程序效率比想象的還是高很多的,既然這么好,干脆再優化一下后用到自己后臺中,雖然現在大部分空間的控制面板中有壓縮和解壓這個功能,但是畢竟有時候有些麻煩.

做這個之前,沒有接觸過php壓縮這一塊,網上搜了一些,大多數都是php壓縮類、壓縮函數,少則幾百行,多的就幾千行代碼,這對于我這種新手來說很摸不到頭腦,再說我也不用這么復雜的功能,最后參考函數手冊,理清楚了幾個相關的函數后,就明白了怎么去整了.

PHP Zip File 函數

記得要開啟 zip,把 php.ini 中的 extension=php_zip.dll 前面的分號去掉.

源碼范例,代碼如下:

  1. <?php 
  2. //需開啟配置 php_zip.dll 
  3.  
  4. //phpinfo(); 
  5.  
  6. header("Content-type:text/html;charset=utf-8"); 
  7.  
  8.  
  9. function get_zip_originalsize($filename$path) { 
  10.  
  11. //先判斷待解壓的文件是否存在 
  12.  
  13. if(!file_exists($filename)){ 
  14.  
  15. die("文件 $filename 不存在!"); 
  16.  
  17. }  
  18.  
  19. $starttime = explode(' ',microtime()); //解壓開始的時間 
  20.  
  21. //將文件名和路徑轉成windows系統默認的gb2312編碼,否則將會讀取不到 
  22.  
  23. $filename = iconv("utf-8","gb2312",$filename); 
  24.  
  25. $path = iconv("utf-8","gb2312",$path); 
  26.  
  27. //打開壓縮包 
  28.  
  29. $resource = zip_open($filename); 
  30.  
  31. $i = 1; 
  32.  
  33. //遍歷讀取壓縮包里面的一個個文件 
  34.  
  35. while ($dir_resource = zip_read($resource)) { 
  36.  
  37. //如果能打開則繼續 
  38.  
  39. if (zip_entry_open($resource,$dir_resource)) { 
  40.  
  41. //獲取當前項目的名稱,即壓縮包里面當前對應的文件名 
  42.  
  43. $file_name = $path.zip_entry_name($dir_resource); 
  44.  
  45. //以最后一個“/”分割,再用字符串截取出路徑部分 
  46.  
  47. $file_path = substr($file_name,0,strrpos($file_name"/")); 
  48.  
  49. //如果路徑不存在,則創建一個目錄,true表示可以創建多級目錄 
  50.  
  51. if(!is_dir($file_path)){ 
  52.  
  53. mkdir($file_path,0777,true); 
  54.  
  55.  
  56. //如果不是目錄,則寫入文件 
  57.  
  58. if(!is_dir($file_name)){ 
  59.  
  60. //讀取這個文件 
  61.  
  62. $file_size = zip_entry_filesize($dir_resource); 
  63.  
  64. //最大讀取6M,如果文件過大,跳過解壓,繼續下一個 
  65.  
  66. if($file_size<(1024*1024*6)){ 
  67.  
  68. $file_content = zip_entry_read($dir_resource,$file_size); 
  69.  
  70. file_put_contents($file_name,$file_content); 
  71.  
  72. }else{ m.survivalescaperooms.com 
  73.  
  74. echo "<p> ".$i++." 此文件已被跳過,原因:文件過大, -> ".iconv("gb2312","utf-8",$file_name)." </p>"
  75.  
  76.  
  77.  
  78. //關閉當前 
  79.  
  80. zip_entry_close($dir_resource); 
  81.  
  82.  
  83.  
  84. //關閉壓縮包 
  85.  
  86. zip_close($resource);  
  87.  
  88. $endtime = explode(' ',microtime()); //解壓結束的時間 
  89.  
  90. $thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]); 
  91.  
  92. $thistime = round($thistime,3); //保留3為小數 
  93.  
  94. echo "<p>解壓完畢!,本次解壓花費:$thistime 秒。</p>"
  95.  
  96.  
  97.  
  98. $size = get_zip_originalsize('20131101.zip','1代瀟瑞/'); 
  99.  
  100.  
  101. ?> 

測試解壓了一個300多KB的小文件,花了0.115秒,測試解壓了一個30多MB的網頁文件,小文件比較多,花了20多秒.

php解壓程序

跟系統比起來確實慢了一些,但是這也很不錯了,剛剛入門,代碼還不優良,但是實現了解壓,而且代碼也比網上的簡介易懂,如果你看到這篇文章,相信對你是有幫助的,程序中用到了程序運行的時間,具體可以看看,代碼如下:

  1. //最大讀取6M,如果文件過大,跳過解壓,繼續下一個 
  2.  
  3.     if($file_size<(1024*1024*6)){ 
  4.  
  5.         $file_content = zip_entry_read($dir_resource,$file_size); 
  6.  
  7.         file_put_contents($file_name,$file_content); 
  8.  
  9.     } 

這一塊做的不太好,這樣對大文件解壓就沒辦法了,等會再優化一下.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昂仁县| 上蔡县| 绵竹市| 马鞍山市| 临颍县| 会东县| 得荣县| 秦安县| 固安县| 新密市| 西青区| 南部县| 广西| 襄城县| 建平县| 都昌县| 黔西| 泌阳县| 芦溪县| 隆尧县| 苏尼特左旗| 泉州市| 清流县| 阿拉善左旗| 九寨沟县| 东方市| 武城县| 临夏市| 罗城| 沧源| 罗田县| 龙海市| 札达县| 武义县| 衡南县| 拉孜县| 甘孜| 会宁县| 定州市| 益阳市| 大宁县|