php[tek] 2018 : Call for Speakers


(PHP 5, PHP 7)

curl_multi_getcontentCURLOPT_RETURNTRANSFER が設定されている場合に、cURL ハンドルの内容を返す


string curl_multi_getcontent ( resource $ch )

CURLOPT_RETURNTRANSFER に何らかのハンドルが設定されている場合に、 この関数はその cURL ハンドルの内容を文字列形式で返します。



curl_init() が返す cURL ハンドル。


CURLOPT_RETURNTRANSFER が設定されている場合に、 cURL ハンドルの内容を返します。


add a note add a note

User Contributed Notes 2 notes

michael at xendica dot com
3 years ago
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("",""); // 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;
    $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

butesa at freenet dot de
4 years ago
You can use curl_multi_getcontent() on a curl handle that was executed with curl_exec() (and not added to a multi handle).
However, this is not very useful because curl_multi_getcontent() will return the same as curl_exec() then.

= curl_init('');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$a = curl_exec($ch);
$b = curl_multi_getcontent($ch);
var_dump($a === $b);
will return:

To Top