elviss 2 роки тому
батько
коміт
c12a1a9fd3
2 змінених файлів з 21 додано та 5 видалено
  1. 9 3
      src/PackageClass.php
  2. 12 2
      src/Utility.php

+ 9 - 3
src/PackageClass.php

@@ -446,9 +446,11 @@ class PackageClass
 		$moduleFiles = $packageInfo['helper']['module-files'] ? : array();	
 		foreach($moduleFiles as $fileInfo){
 			$fileName = $fileInfo['name'];
+			$fileMd5 = $fileInfo['md5'];
+			$fileSize = int($fileInfo['size']);
 
 			//下载文件到缓存区
-			$filePath = downloadToDir($toolDir,$downClient,$ossHost,$repoName,$fileName,$cacheDir);
+			$filePath = downloadToDir($toolDir,$downClient,$ossHost,$repoName,$fileName,$fileMd5,$fileSize,$cacheDir);
 			if(! $filePath ){
 				logError($repoName,"fetch module file failed",$fileName);
 				return false;
@@ -494,9 +496,11 @@ class PackageClass
 		$commonFiles = $packageInfo['helper']['common-files']? : array();
 		foreach($commonFiles as $fileInfo){
 			$fileName = $fileInfo['name'];
+			$fileMd5 = $fileInfo['md5'];
+			$fileSize = int($fileInfo['size']);
 			$target = $fileInfo['target'];
 			//下载文件到缓存区
-			$filePath = downloadToDir($toolDir,$downClient,$ossHost,$repoName,$fileName,$cacheDir);
+			$filePath = downloadToDir($toolDir,$downClient,$ossHost,$repoName,$fileName,$fileMd5,$fileSize,$cacheDir);
 			if(! $filePath ){
 				logError($repoName,"fetch common file failed",$fileName);
 				return false;
@@ -534,9 +538,11 @@ class PackageClass
 		$vendorFiles = $packageInfo['helper']['vendor-files']? : array();
 		foreach($vendorFiles as $fileInfo){
 			$fileName = $fileInfo['name'];
+			$fileMd5 = $fileInfo['md5'];
+			$fileSize = int($fileInfo['size']);
 			$target = $fileInfo['target'];
 			//下载文件到缓存区
-			$filePath = downloadToDir($toolDir,$downClient,$ossHost,$repoName,$fileName,$cacheDir);
+			$filePath = downloadToDir($toolDir,$downClient,$ossHost,$repoName,$fileName,$fileMd5,$fileSize,$cacheDir);
 			if(! $filePath ){
 				logError($repoName,"fetch vendor file failed",$fileName);
 				return false;

+ 12 - 2
src/Utility.php

@@ -302,14 +302,24 @@ function loadConfig($cfgPath){
 	return $config;
 }
 
+//检测文件是否需要下载
+function isFileCached($filePath,$fileMd5,$fileSize){
+	if( file_exists($targetPath) ) {
+		return true;
+	}
+	if( filesize($targetPath) == $fileSize){
+		return true;
+	}
+	return false;
+}
 //多线程下载文件
-function downloadToDir($toolDir,$downClient,$ossHost,$repoName,$fileName,$targetDir){
+function downloadToDir($toolDir,$downClient,$ossHost,$repoName,$fileName,$fileMd5,$fileSize,$targetDir){
 	if (!file_exists($targetDir)){
 		mkdir($targetDir,0777,true);
 	}
 
 	$targetPath = pathJoin($targetDir,$fileName);
-	if( file_exists($targetPath) ) {
+	if( isFileCached($targetPath,$fileMd5,$fileSize) ) {
 		return $targetPath;
 	}
 	$remoteUrl = pathJoin($ossHost,$repoName,urlencode($fileName));