Home >Backend Development >PHP Tutorial >PHP CURL multi-threaded operation code example_PHP tutorial

PHP CURL multi-threaded operation code example_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 09:53:46838browse

PHP CURL multi-threaded operation code example

This article mainly introduces PHP CURL multi-threaded operation code example. This article directly gives the implementation code. Friends who need it can refer to it

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
$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

62

63

64

65

66

67

68

69

70

/*

* Curl 多线程类

* 使用方法:

* ========================

$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_setopt($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);

}

}

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 62 63 64 65 66 67 68 69 70
/* * Curl 多线程类 * 使用方法: * ======================== $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_setopt($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); } }

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1000087.htmlTechArticlePHP CURL multi-threaded operation code example This article mainly introduces PHP CURL multi-threaded operation code example. This article directly provides Out the implementation code, friends in need can refer to the usage method: ?...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn