Садочка
Новичок
Всем привет, мой первый пост здесь 
В силу необходимости бережного отношения к трафику, мне необходимо получать только начало удаленного файла. Нужны кукисы, так что использую CURL. Серевер встроенный лимитер не поддерживает, поэтому приходится извращаться. А вот дальше проблемы какие-то начались.
Пишу собственную CURLOPT_WRITEFUNCTION, но стоит мне задать CURLOPT_RETURNTRANSFER, чтобы он возвращал а не распечатывал, как он тут же забывает о наличии CURLOPT_WRITEFUNCTION и возвращает целый файл. Я справилась, конечно же, но выглядит это криво:
Нет ли более прямого способа сделать тоже самое? Имею в виду: "use (&$content".

В силу необходимости бережного отношения к трафику, мне необходимо получать только начало удаленного файла. Нужны кукисы, так что использую 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;