This article introduces a function implemented in php that can download multiple remote files through multiple threads. For more information, see. Run the following code to download multiple remote files with multiple threads:
$ V) {if (! Empty ($ v) & preg_match ("~ ^ Http ~ I ", $ v) {$ nurl [$ k] = trim (str_replace ('', "% 20", $ v )); $ curl [$ k] = curl_init ($ nurl [$ k]); curl_setopt ($ curl [$ k], CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); curl_setopt ($ curl [$ k], CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ curl [$ k], CURLOPT_HEADER, 0); curl_setopt ($ curl [$ k], CURLOPT_CONNECTTIMEOUT, 20); if (! Isset ($ handle) {$ handle = curl_multi_init ();} curl_multi_add_handle ($ handle, $ curl [$ k]);} continue;} $ active = null; do {$ mrc = @ curl_multi_exec ($ handle, $ active);} while ($ mrc = CURLM_CALL_MULTI_PERFORM); while ($ active & $ mrc = CURLM_ OK) {if (curl_multi_select ($ handle )! =-1) {do {$ mrc = curl_multi_exec ($ handle, $ active);} while ($ mrc = CURLM_CALL_MULTI_PERFORM );}} foreach ($ curl as $ k => $ v) {if (curl_error ($ curl [$ k]) = "") {if ($ k = 0) {$ fname [$ k] = strtolower ($ name. '. '. pathinfo ($ urls [$ k], PATHINFO_EXTENSION);} else {$ fname [$ k] = strtolower ($ name. '_'. $ k. '. '. pathinfo ($ urls [$ k], PATHINFO_EXTENSION);} $ text [$ k] = (string) curl_multi_getcontent ($ curl [$ K]); $ filedir [$ k] = $ dir. '/'. $ fname [$ k]; if (file_put_contents ($ filedir [$ k], $ text [$ k]) {$ filepath [$ k] = $ path. $ fname [$ k] ;}} curl_multi_remove_handle ($ handle, $ curl [$ k]); curl_close ($ curl [$ k]);} curl_multi_close ($ handle ); return $ filepath;}?> |