@@ -231,54 +231,58 @@ public function spider_wait($status = true, $min = SPIDERWAIT_TIME_MIN, $max = S
231231 sleep ($ num );
232232 }
233233 }
234-
234+
235235 /**
236236 * 一个下载调用其他函数的封装
237237 * @param $string
238238 * @param $images_arr
239239 */
240240 public function quick_down_img ($ string , $ images_arr , $ spider_name , $ filename_data = null )
241241 {
242- if (CURL_DOWN_OPT ) { //选择下载模式
243- $ this ->curl_multi_down_images ($ string , $ images_arr , $ spider_name , $ filename_data );
242+ $ dir_path = $ this ->new_dir_name ($ string );//生成保存路径
243+ if (CURL_DOWN_OPT ) { //下载图片
244+ $ this ->curl_multi_down_images ($ images_arr , $ dir_path , $ spider_name , $ filename_data );
244245 } else {
245- $ dir_path = $ this ->new_dir_name ($ string );//生成保存路径
246- $ this ->image_save ($ images_arr , $ dir_path , $ spider_name , $ filename_data );//下载图片
247- print_r ("文件夹现在有: " . $ this ->images_number ($ dir_path ) . "张图片 " );
246+ $ this ->image_save ($ images_arr , $ dir_path , $ spider_name , $ filename_data );
248247 }
248+ print_r ("文件夹现在有: " . $ this ->images_number ($ dir_path ) . "张图片 " );
249249 }
250250
251251 /**
252- * CURL多线程下载
252+ * 多线程图片下载
253+ * @param $images_arr
254+ * @param $dir_path
255+ * @param $spider_name
256+ * @param null $filename_data
253257 */
254- public function curl_multi_down_images ($ string , $ images_arr , $ spider_name , $ filename_data = null )
258+ public function curl_multi_down_images ($ images_arr , $ dir_path , $ spider_name , $ filename_data = null )
255259 {
256- $ dir_path = $ this ->new_dir_name ($ string );//生成保存路径
257260 for ($ c = 1 ; $ c <= count ($ images_arr ); $ c += CURL_DOWN_NUM ) {//开始循环
258-
259261 $ mh = curl_multi_init ();//初始化
260262 $ arr = array_slice ($ images_arr , $ c - 1 , CURL_DOWN_NUM );
261263 $ conn = [];
262264
263- foreach ($ arr as $ title => $ url ) {
265+ foreach ($ arr as $ item ) {
266+ $ title = array_keys ($ item )[0 ];
264267 if (file_exists ($ dir_path . DIRECTORY_SEPARATOR . $ title )) {//检测是否存在
265268 echo "已存在 " . PHP_EOL ;
266269 continue ;
267270 }
268271 $ conn [$ title ] = curl_init ();
269- curl_setopt ($ conn [$ title ], CURLOPT_URL , $ url );
272+ curl_setopt ($ conn [$ title ], CURLOPT_URL , $ item [$ title ]);
273+ curl_setopt ($ conn [$ title ], CURLOPT_TIMEOUT , 30 );
270274 curl_setopt ($ conn [$ title ], CURLOPT_RETURNTRANSFER , 1 );
271275 curl_multi_add_handle ($ mh , $ conn [$ title ]);
276+ echo $ title . PHP_EOL ;
272277 }
278+
273279 // 执行批处理句柄
274280 $ active = null ;
275281 do {
276282 curl_multi_exec ($ mh , $ active ); //执行批处理句柄
277283 } while ($ active > 0 ); //4
278-
279284 foreach ($ conn as $ title => $ url ) {
280285 $ res [$ title ] = curl_multi_getcontent ($ conn [$ title ]);
281- curl_close ($ conn ['title ' ]);
282286 curl_multi_remove_handle ($ mh , $ conn [$ title ]);//释放资源
283287 }
284288
@@ -288,7 +292,6 @@ public function curl_multi_down_images($string, $images_arr, $spider_name, $file
288292 file_put_contents ($ dir_path . DIRECTORY_SEPARATOR . $ title , $ item );
289293 $ this ->add_log ($ spider_name , $ title . PHP_EOL , $ filename_data );
290294 }
291- print_r ("文件夹现在有: " . $ this ->images_number ($ dir_path ) . "张图片 " . PHP_EOL );
292295 }
293296 }
294297
@@ -323,4 +326,4 @@ public function bMenu($string, $spiderName)
323326 }
324327
325328 public $ splitLine = "<<<<<<<<<<<<<<<<<<================================>>>>>>>>>>>>>>>>>> " ;
326- }
329+ }
0 commit comments