作者 刘锟

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,32 +242,28 @@ public function websiteHtml(Request $request) @@ -242,32 +242,28 @@ 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; 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;
271 } 267 }
272 $zip = new ZipArchive(); 268 $zip = new ZipArchive();
273 if ($zip->open($targetFile) === TRUE) { 269 if ($zip->open($targetFile) === TRUE) {
@@ -279,23 +275,15 @@ public function websiteHtmlHandle($url, $domain) @@ -279,23 +275,15 @@ public function websiteHtmlHandle($url, $domain)
279 $zip->extractTo($outputFolder); 275 $zip->extractTo($outputFolder);
280 $zip->close(); 276 $zip->close();
281 $this->deleteDirectory($targetFile); 277 $this->deleteDirectory($targetFile);
282 -  
283 - $transmitUrl = env("TRANSMIT_URL");  
284 - $this->httpPost($transmitUrl . "api/selfSiteNotify/", json_encode(['domain' => $domain]));  
285 } else { 278 } else {
286 // 处理打开压缩文件失败的情况 279 // 处理打开压缩文件失败的情况
287 - $this->output("解压失败!");  
288 - return false; 280 + $this->output('解压文件 ' . $targetFile . ' 失败');
  281 + continue;
289 } 282 }
290 - } catch (\Exception $e) {  
291 - $this->output($this->error($e->getMessage()));  
292 - return false;  
293 - }  
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);