This article mainly introduces the example of multi-threaded php URL operation code. This article provides the implementation code directly. If you need it, refer to the following usage:
$urls = array("http://baidu.com", "http://21andy.com", "http://google.com");$mp = new MultiHttpRequest($urls);$mp->start();
/** Curl multithreading class * usage: * =======================================$ urls = array (" http://baidu.com "," http://dzone.com "," http://google.com "); $ Mp = new MultiHttpRequest ($ urls); $ mp-> start (); * =====================================*/class MultiHttpRequest {public $ urls = array (); public $ curlopt_header = 1; public $ method = "GET"; function _ construct ($ urls = false) {$ this-> urls = $ urls ;} function set_urls ($ urls) {$ this-> urls = $ urls; return $ this;} function is_return_header ($ B) {$ this-> curlopt_header = $ B; return $ this;} function set_method ($ M) {$ this-> medthod = strtoupper ($ m); return $ this;} function start () {if (! Is_array ($ this-> urls) or count ($ this-> urls) = 0) {return false;} $ curl = $ text = array (); $ handle = curl_multi_init (); foreach ($ this-> urls as $ k => $ v) {$ curl [$ k] = $ this-> add_handle ($ handle, $ v) ;}$ this-> exec_handle ($ handle); foreach ($ this-> urls as $ k =>$ v) {curl_multi_getcontent ($ curl [$ k]); echo $ curl [$ k]. "\ n"; // $ text [$ k] = curl_multi_getcontent ($ curl [$ k]); // echo $ text [$ k], "\ n"; curl_multi_remove_handle ($ handle, $ curl [$ k]);} curl_multi_close ($ handle);} private function add_handle ($ handle, $ url) {$ curl = curl_init (); curl_setopt ($ curl, CURLOPT_URL, $ url); curl_setopt ($ curl, CURLOPT_HEADER, $ this-> curlopt_header); curl_setopt ($ curl, expires, expires, 1); curl_multi_add_handle ($ handle, $ curl); return $ curl;} private function exec_handle ($ handle) {$ flag = null; do {curl_multi_exec ($ handle, $ flag) ;}while ($ flag> 0 );}}