2014-01-16 3 views
2

Возможно, это противоречит обычно заданному вопросу, но есть ли вообще-то сделать запрос cURL медленнее и продлить процесс загрузки дольше? Я искал и не мог найти никаких решений. Спасибо за вашу помощь!Возможно ли замедлить запрос PHP cURL

+2

через несколько 'сна()' 'ы в к смешиванию. вероятно, лучший ответ, если вы объясните, зачем вам это нужно. –

+0

@ Дагон Я просто хочу замедлить запрос, потому что он должен быть инициирован до того, как я сделаю что-то еще, но он не может загрузить, пока эта другая вещь не будет завершена, если это будет смысл. Не могли бы вы рассказать о своем ответе? Где бы я поместил sleep() после или перед запросом? Благодаря! – Grant

+1

нет, это действительно не имеет смысла - извините; ( –

ответ

5

попробовать CURLOPT_MAX_RECV_SPEED_LARGE, чтобы замедлить передачу

curl_setopt($cSlow,CURLOPT_MAX_RECV_SPEED_LARGE,10) 

Он будет работать только с PHP 5.4

ps.Sorry бедного enlgish

+1

Хороший ответ. Из документов PHP по этому вопросу - _ Если загрузка превышает эту скорость (подсчитывается в байтах в секунду) в совокупном среднем во время передачи, перенос приостанавливается, чтобы средняя скорость была меньше или равна значению параметра. По умолчанию неограниченная скорость. – madebydavid

+0

@BrenoZan ваш английский хороший! В любом случае, похоже, я получаю сообщение об ошибке «Тайм-аут запроса», потому что он слишком долгое время. В любом случае, я мог бы сделать это немного быстрее? Спасибо – Grant

+1

Вы можете установить CURLOPT_LOW_SPEED_LIMIT на очень низкую скорость и CURLOPT_LOW_SPEED_TIME в течение длительного времени, чтобы избежать абортов на соединение, но .. «Тайм-аут запроса» кажется, что у вас есть реальная проблема с сетью. Увеличьте время с помощью CURLOPT_TIMEOUT .. и молись о своем администратор сети будет в хорошем настроении .. – BrenoZan

3

Вы можете добавить USleep в локон функции прогресса, если вам действительно нужно взломать медленный перевод:

<?php 

/* fast curl */ 
$cFast = curl_init('http://stackoverflow.com/users/2779152/madebydavid'); 
curl_setopt($cFast, CURLOPT_RETURNTRANSFER, true); 

$time = microtime(true); 
$result = curl_exec($cFast); 
echo("fast: ".(microtime(true) - $time)."\n"); 


/* slow curl */ 
$cSlow = curl_init('http://stackoverflow.com/users/2779152/madebydavid'); 
curl_setopt($cSlow, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($cSlow, CURLOPT_NOPROGRESS, false); 
curl_setopt($cSlow, CURLOPT_PROGRESSFUNCTION, function() { 
    usleep(100000); 
    return 0; 
}); 

$time = microtime(true); 
$result = curl_exec($cSlow); 
echo("slow: ".(microtime(true) - $time)."\n"); 

Первый запрос быстро, второй медленно - если вы сохраните его как curlFastSlow.php затем запустить его, второй запрос должен иметь заметную разницу:

$ php -q curlFastSlow.php 
fast: 0.58203315734863 
slow: 1.5010859966278 
+0

К сожалению, похоже, что это замедляет страницу, которая делает запрос cURL, а не сам запрос cURL. – Grant

+0

@Grant, он работал для меня, по крайней мере, для загрузки (т. Е. Запроса POST с прикрепленным файлом), я смог замедлить загрузку – matteo

+0

Хотя это своего рода взлома, это полезно для тех, кто имеет PHP версии от 5.3 до 5.4. – matteo

Смежные вопросы