作者 刘锟

update

@@ -52,18 +52,7 @@ public function websiteHandle() @@ -52,18 +52,7 @@ public function websiteHandle()
52 $this->output('网站更新开始'); 52 $this->output('网站更新开始');
53 $noticeController = new NoticeController(); 53 $noticeController = new NoticeController();
54 $infoArr = json_decode($info, true); 54 $infoArr = json_decode($info, true);
55 - if ($infoArr["num"] < 3) {  
56 - $isSuccess = $noticeController->websiteHtmlHandle($infoArr["url"], $infoArr["domain"]);  
57 - if ($isSuccess) {  
58 - Redis::del('handle_html');  
59 - } else {  
60 - $infoArr["num"]++;  
61 - Redis::set('handle_html', json_encode($infoArr));  
62 - }  
63 - } else {  
64 - Redis::del('handle_html');  
65 - Log::info("网站处理失败!", $infoArr);  
66 - } 55 + $noticeController->websiteHtmlHandle($infoArr["zip_count"], $infoArr["domain"]);
67 $this->output('网站更新结束'); 56 $this->output('网站更新结束');
68 } 57 }
69 return true; 58 return true;
@@ -215,6 +215,7 @@ public function websiteHtml(Request $request) @@ -215,6 +215,7 @@ public function websiteHtml(Request $request)
215 { 215 {
216 $domain = $request->getHost(); 216 $domain = $request->getHost();
217 $site_token = $request->input('site_token'); 217 $site_token = $request->input('site_token');
  218 + $zip_count = $request->input('zip_count');
218 $token = env("SECRET_TOKEN"); 219 $token = env("SECRET_TOKEN");
219 $pid = env("MERCHANT_NUMBER"); 220 $pid = env("MERCHANT_NUMBER");
220 $apiUrl = env("API_URL"); 221 $apiUrl = env("API_URL");
@@ -232,8 +233,7 @@ public function websiteHtml(Request $request) @@ -232,8 +233,7 @@ public function websiteHtml(Request $request)
232 233
233 try { 234 try {
234 $res = $this->curlGet($requestUrl); 235 $res = $this->curlGet($requestUrl);
235 - $url = isset($res["data"]["url"]) && !empty($res["data"]["url"]) ? urldecode($res["data"]["url"]) : "";  
236 - if ($res["status"] != self::SUCCESS || $url == "") { 236 + if ($res["status"] != self::SUCCESS) {
237 $msg = isset($res["message"]) && !empty($res["message"]) ? $res["message"] : "请求失败!"; 237 $msg = isset($res["message"]) && !empty($res["message"]) ? $res["message"] : "请求失败!";
238 return $this->error($msg); 238 return $this->error($msg);
239 } 239 }
@@ -242,60 +242,48 @@ public function websiteHtml(Request $request) @@ -242,60 +242,48 @@ public function websiteHtml(Request $request)
242 } 242 }
243 243
244 $info = [ 244 $info = [
245 - "url" => $url,  
246 "domain" => $domain, 245 "domain" => $domain,
247 - "num"=>0, 246 + "zip_count" => $zip_count
248 ]; 247 ];
249 $info = json_encode($info); 248 $info = json_encode($info);
250 - Redis::set('handle_html',$info); 249 + Redis::set('handle_html', $info);
251 return $this->success(); 250 return $this->success();
252 - //return $this->websiteHtmlHandle($url, $domain);  
253 } 251 }
254 252
255 /** 253 /**
256 * 网站html解压 254 * 网站html解压
257 - * @param $url 255 + * @param $zip_count
258 * @param $domain 256 * @param $domain
259 - * @return string  
260 */ 257 */
261 - public function websiteHtmlHandle($url, $domain) 258 + public function websiteHtmlHandle($zip_count, $domain)
262 { 259 {
263 - $pathInfo = pathinfo($url);  
264 - $extension = $pathInfo['extension'];  
265 - //只允许解压zip格式文件  
266 - if (in_array($extension, ["zip"])) {  
267 - try {  
268 - $targetFile = $this->downLoadFile($url);  
269 - if ($targetFile == ""){  
270 - return false;  
271 - }  
272 - $zip = new ZipArchive();  
273 - if ($zip->open($targetFile) === TRUE) {  
274 - $outputFolder = public_path($domain);  
275 - if (!is_dir($outputFolder)) {  
276 - mkdir($outputFolder, 0777, true);  
277 - }  
278 - // 解压缩文件,保留原文件结构  
279 - $zip->extractTo($outputFolder);  
280 - $zip->close();  
281 - $this->deleteDirectory($targetFile);  
282 -  
283 - $transmitUrl = env("TRANSMIT_URL");  
284 - $this->httpPost($transmitUrl . "api/selfSiteNotify/", json_encode(['domain' => $domain]));  
285 - } else {  
286 - // 处理打开压缩文件失败的情况  
287 - $this->output("解压失败!");  
288 - return false; 260 + $api_url = env('API_URL');
  261 +
  262 + for ($i = 0; $i <= $zip_count; $i++) {
  263 + $targetFile = $this->downLoadFile($api_url . $domain . '_part' . $i . '.zip');
  264 + if ($targetFile == "") {
  265 + $this->output('文件 ' . $targetFile . ' 不存在');
  266 + continue;
  267 + }
  268 + $zip = new ZipArchive();
  269 + if ($zip->open($targetFile) === TRUE) {
  270 + $outputFolder = public_path($domain);
  271 + if (!is_dir($outputFolder)) {
  272 + mkdir($outputFolder, 0777, true);
289 } 273 }
290 - } catch (\Exception $e) {  
291 - $this->output($this->error($e->getMessage()));  
292 - return false; 274 + // 解压缩文件,保留原文件结构
  275 + $zip->extractTo($outputFolder);
  276 + $zip->close();
  277 + $this->deleteDirectory($targetFile);
  278 + } else {
  279 + // 处理打开压缩文件失败的情况
  280 + $this->output('解压文件 ' . $targetFile . ' 失败');
  281 + continue;
293 } 282 }
294 - } else {  
295 - $this->output("不允许解压改格式压缩包!");  
296 - return false;  
297 } 283 }
298 - return true; 284 +
  285 + $transmitUrl = env("TRANSMIT_URL");
  286 + $this->httpPost($transmitUrl . "api/selfSiteNotify/", json_encode(['domain' => $domain]));
299 } 287 }
300 288
301 /** 289 /**
@@ -310,7 +298,7 @@ public function downLoadFile($url) @@ -310,7 +298,7 @@ public function downLoadFile($url)
310 mkdir($savePath, 0777, true); 298 mkdir($savePath, 0777, true);
311 } 299 }
312 $targetFile = $savePath . '/' . basename($url); 300 $targetFile = $savePath . '/' . basename($url);
313 - if(!file_exists($targetFile)){ 301 + if (!file_exists($targetFile)) {
314 $file = fopen($targetFile, 'w'); 302 $file = fopen($targetFile, 'w');
315 fclose($file); 303 fclose($file);
316 chmod($targetFile, 0755); 304 chmod($targetFile, 0755);