Здравствуйте!
Подскажите, почему callback не записывает результат в переменную $server_output.
Спасибо за любую помощь!
// ...
$response = getCurl($link, $headers, true);
function getCurl($link, $headers, $chunked = false){
if(!isset($link) || !isset($headers))
{ print 'Error: getCurl argument'; die(); };
$server_output = '';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
if($chunked){
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($ch, $str){
$server_output .= $str;
// на этой строчке $server_output имеет только один последний чанк
return strlen($str);
});
// на этой строчке $server_output уже пуста
curl_exec($ch);
}else{
$server_output = curl_exec($ch);
};
curl_close($ch); return $server_output;
};
и, если вынести callback в отдельную функцию, тоже ничего не пишет:
function getCurl($link, $headers, $chunked = false){
if(!isset($link) || !isset($headers))
{ print 'Error: getCurl argument'; die(); };
$server_output = '';
$callback = function($ch, $str){
$server_output .= $str;
return strlen($str);
};
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
if($chunked){
curl_setopt($ch, CURLOPT_WRITEFUNCTION, $callback);
curl_exec($ch);
}else{
$server_output = curl_exec($ch);
};
curl_close($ch); return $server_output;
};