CURL и CURLOPT_RETURNTRANSFER

Садочка

Новичок
Всем привет, мой первый пост здесь :)
В силу необходимости бережного отношения к трафику, мне необходимо получать только начало удаленного файла. Нужны кукисы, так что использую CURL. Серевер встроенный лимитер не поддерживает, поэтому приходится извращаться. А вот дальше проблемы какие-то начались.

Пишу собственную CURLOPT_WRITEFUNCTION, но стоит мне задать CURLOPT_RETURNTRANSFER, чтобы он возвращал а не распечатывал, как он тут же забывает о наличии CURLOPT_WRITEFUNCTION и возвращает целый файл. Я справилась, конечно же, но выглядит это криво:

PHP:
$content='';
$write = function ($ch,$str) use (&$content,&$size){
	static $full;
	static $data;
	$length = strlen($str);
	$full += $length;
	if($full >= $size) {
		$data.=$str;
		$content=$data;
		return -1;
	}
	$data .=$str;
	return $length;
};


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RANGE, '0-'.$size);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, $write);
$result = curl_exec($ch);
curl_close($ch);
print $content;
Нет ли более прямого способа сделать тоже самое? Имею в виду: "use (&$content".
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Садочка нет у Curl никаких проблем с RETURN TRANSFER. Я сделал так: gCurl
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
да, мне нравятся эти дефолтные значения в нативных функциях php, которые нельзя задать из скрипта :)
автору надо кешировать данные ответа в колбеке WRITEFUNCTION
 
Сверху