This article mainly introduces the PHP CURL multithreaded Operation code example, this article directly gives the realization code, needs the friend may refer to under
How to use:
?
1 2 3 |
$urls = Array ("http://baidu.com", "http://21andy.com", "http://google.com"); $MP = new Multihttprequest ($urls); $MP->start (); |
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
* * * Curl multi-threaded 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], "NN"; 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_set Opt ($curl, Curlopt_header, $this->curlopt_header); curl_setopt ($curl, Curlopt_returntransfer, 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 ); } } |