curl_multi_getcontent

(PHP 5, PHP 7, PHP 8)

curl_multi_getcontentDevuelve el contenido obtenido con la opción CURLOPT_RETURNTRANSFER

Descripción

curl_multi_getcontent(CurlHandle $handle): ?string

Si CURLOPT_RETURNTRANSFER es una opción definida para un manejador específico, entonces esta función devolverá el contenido de ese manejador cURL, en forma de string.

Parámetros

ch

El recurso cURL devuelto por curl_init().

Valores devueltos

Devuelve el contenido del manejador cURL, si CURLOPT_RETURNTRANSFER está definido o null si no lo está.

Historial de cambios

Versión Descripción
8.0.0 handle expects a CurlHandle instance now; previously, a resource was expected.

Ver también

add a note

User Contributed Notes 2 notes

up
23
michael at xendica dot com
11 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("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

?>
up
-1
butesa at freenet dot de
11 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.

<?php
$ch
= curl_init('http://www.example.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$a = curl_exec($ch);
$b = curl_multi_getcontent($ch);
var_dump($a === $b);
curl_close($ch);
?>
will return:

bool(true)
To Top