Implementation code for php curl to open URLs in batches (curl_multi class)
Release: 2016-07-25 08:55:05
Original
1902 people have browsed it
-
- /*
- * After testing, curl_multi is faster than the Foreach loop when there are more than four URLs..
- * by wc1217
- * edit: bbs.it-home.org
- */
- class curl_multi{
- //Curl handle
- //private $curl_handle = null;
- //Web address
- private $url_list = array();
- //Parameters
- private $curl_setopt = array(
- 'CURLOPT_RETURNTRANSFER' => 1, / /The result is returned to the variable
- 'CURLOPT_HEADER' => 0, //Do you want HTTP header?
- 'CURLOPT_NOBODY' => 0, //No content?
- 'CURLOPT_FOLLOWLOCATION' => 0, //Automatic tracking
- ' CURLOPT_TIMEOUT' => 6//Timeout(s)
- );
-
- function __construct($seconds = 30){
- set_time_limit($seconds);
- }
-
- /*
- * Set URL
- * @list array
- * /
- public function setUrlList($list = array()){
- $this->url_list = $list;
- }
-
- /*
- * Set parameters
- * @cutPot array
- */
- public function setOpt($cutPot ){
- $this->curl_setopt = $cutPot + $this->curl_setopt;
- }
-
- /*
- * Execute
- * @return array
- */
- public function exec(){
- $mh = curl_multi_init( );
-
- foreach($this->url_list as $i => $url){
- $conn[$i] = curl_init($url);
-
- foreach($this->curl_setopt as $key = > $val){
- curl_setopt($conn[$i], preg_replace('/(CURLOPT_w{1,})/ie', '$0', $key), $val);
- }
- curl_multi_add_handle($mh , $conn[$i]);
- }
-
- $active = false;
-
- do{
- $mrc = curl_multi_exec($mh, $active);
- }while($mrc == CURLM_CALL_MULTI_PERFORM);
-
- while( $active and $mrc == CURLM_OK){
- if(curl_multi_select($mh) != -1){
- do{
- $mrc = curl_multi_exec($mh, $active);
- }while($mrc == CURLM_CALL_MULTI_PERFORM) ;
- }
- }
-
- $res = array();
- foreach($this->url_list as $i => $url){
- $res[$i] = curl_multi_getcontent($conn[$i]) ;
- curl_close($conn[$i]);
- curl_multi_remove_handle($mh, $conn[$i]); //Release resources immediately after use
- }
- curl_multi_close($mh);
- return $res;
- }
- }
- ?>
Copy code
|
Statement of this Website
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
Latest Articles by Author
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31