curl_exec vs curl_multi_getcontent - PullRequest
       3

curl_exec vs curl_multi_getcontent

0 голосов
/ 16 ноября 2011

, поэтому я пытаюсь получить содержимое изображения (первые 700 байт) с удаленного сайта:

$headers = array(
"Range: bytes=0-700"
);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$raw = curl_exec($curl);
curl_close($curl);
@$im = imagecreatefromstring($raw);

где $ url - это какое-то удаленное изображение .... и оно прекрасно работает

но потом, когда я использую curl_multi_getcontent,

$h = curl_init();
$headers = array(
"Range: bytes=0-700"
);
curl_setopt($h, CURLOPT_URL, $url);
curl_setopt($h, CURLOPT_HEADER, $headers); 
curl_setopt($h, CURLOPT_RETURNTRANSFER, 1); //return the image value

$mh = curl_multi_init();
curl_multi_add_handle($mh, $h);

$running = null;
do {
   curl_multi_exec($mh, $running);
} while ($running > 0);

$raw = curl_multi_getcontent($h);
@$im = imagecreatefromstring($raw);

PHP в строке @$im = imagecreatefromstring($raw); будет жаловаться на то, что Данные не в распознанном формате

что я сделал не так? Я хотел бы использовать опцию multi exec, так как затем могу распараллелить ее ...

Я также попытался изменить эту строку: curl_setopt($h, CURLOPT_HEADER, $headers); в мультисегменте в CURLOPT_HTTPHEADER, как и в первом, но вместо этого соединение было сброшено, и снова это произошло из-за imagecreatefromstring, так как после комментирования этой строки он не получил сброс

1 Ответ

1 голос
/ 09 декабря 2011

Ваша вторая версия кода содержит:

curl_setopt($h, CURLOPT_HEADER, $headers); 

Это указывает cURL возвращать HTTP-заголовки вместе с результатом (например, CURLOPT_HEADER, TRUE)

Чтобы устранить проблему, используйте:

curl_setopt($h, CURLOPT_HTTPHEADER, $headers);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...