php中的curl

两天没有记录,利用下班的时间记录一下curl的一些使用信息,留作备注。

直接贴代码备忘了

<?php
/**
 * Created by PhpStorm.
 * User: f3ngt1ng
 * Date: 2017/2/17
 * Time: 9:45
 */

/**
 * $init = curl_init();
 * $mh = curl_multi_init()
 * curl_multi_add_handler($mh, $init);
 * 返回一个批处理句柄
 * 运行当前 cURL 句柄的子连接
 *curl_multi_exec($mh,$running);
 * curl_multi_remove_handle($mh, $ch1);
 * curl_multi_close($mh);
 */

$version = curl_version();
var_dump($version);
//curl_multi 使用示例
/**
 * This seems to work as expected for me - allowing me to get the content
 *from a curl_multi operation into variables :
 *(Thanks go to many other notes in related documentation
 *(there is much copy/pasting) all I did was add the relevant line(s))
 */
    $aURLs = array("http://www.php.net","http://www.w3cschools.com"); // array of URLs
    $mh = curl_multi_init(); // init the curl Multi

    $aCurlHandles = array(); // create an array for the individual curl handles

    foreach ($aURLs as $id=>$url) { //add the handles for each url
        $ch = curl_setup($url,$socks5_proxy,$usernamepass);
        $ch = curl_init(); // init curl, and then setup your options
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // returns the result - very important
        curl_setopt($ch, CURLOPT_HEADER, 0); // no headers in the output

        $aCurlHandles[$url] = $ch;
        curl_multi_add_handle($mh,$ch);
    }

    $active = null;
    //execute the handles
    do {
        $mrc = curl_multi_exec($mh, $active);
    }
    while ($mrc == CURLM_CALL_MULTI_PERFORM);

    while ($active && $mrc == CURLM_OK) {
        if (curl_multi_select($mh) != -1) {
            do {
                $mrc = curl_multi_exec($mh, $active);
            } while ($mrc == CURLM_CALL_MULTI_PERFORM);
        }
    }

/* This is the relevant bit */
        // iterate through the handles and get your content
    foreach ($aCurlHandles as $url=>$ch) {
        $html = curl_multi_getcontent($ch); // get the content
        // do what you want with the HTML
        curl_multi_remove_handle($mh, $ch); // remove the handle (assuming  you are done with it);
    }
/* End of the relevant bit */

    curl_multi_close($mh); // close the curl multi handler

贴下参考链接:

http://stackoverflow.com/questions/15559157/understanding-php-curl-multi-exec

http://technosophos.com/2012/10/26/php-and-curlmultiexec.html

http://www.adrianworlddesign.com/Knowledge-Base/php/Download-content-with-cURL/Doing-curlmultiexec-the-right-way

posted @ 2017-02-17 17:32  封停  阅读(161)  评论(0)    收藏  举报