У меня была похожая проблема, которая требовала, чтобы я мог остановить передачу скручивания в середине. Это легко входит в мою личную десятку «грязных хаков, которые, кажется, работают» всех времен.
Создайте функцию чтения локон, которая знает, когда пора отменить загрузку.
function curlReadFunction($ch, $fileHandle, $maxDataSize){
if($GLOBALS['abortTransfer'] == TRUE){
sleep(1);
return "";
}
return fread($fileHandle, $maxDataSize);
}
И скажите Керлу, что он остановился, если скорость чтения данных падает слишком низко в течение определенного времени.
curl_setopt($ch, CURLOPT_READFUNCTION, 'curlReadFunction');
curl_setopt($ch, CURLOPT_LOW_SPEED_LIMIT, 1024);
curl_setopt($ch, CURLOPT_LOW_SPEED_TIME, 5);
Это приведет к прерыванию передачи скручивания во время загрузки. Очевидно, не идеально, но, похоже, работает.