Home >php教程 >php手册 >PHP CURL 多线程操作代码实例

PHP CURL 多线程操作代码实例

WBOY
WBOYOriginal
2016-06-13 09:04:261069browse

PHP CURL 多线程操作代码实例

   这篇文章主要介绍了PHP CURL 多线程操作代码实例,本文直接给出实现代码,需要的朋友可以参考下

  使用方法:

  ?

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], "\n\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, 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);

}

}

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