Я пытаюсь найти способ остановить активную загрузку PHP Curl. Я загружаю большие файлы с удаленного сервера, и иногда я хотел бы отменить загрузку после ее запуска. Я попытался вернуть false в пределах CURLOPT_PROGRESSFUNCTION
, однако это не сработало. Я также попытался удалить файл, который был загружен, и это тоже не сработало (статистика сети показывала, что загрузка продолжается).Остановить PHP Curl Скачать
Ниже код запускается с помощью быстрого вызова Ajax:
$ch = curl_init($file->url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOPROGRESS, false);
curl_setopt($ch, CURLOPT_FILE, $targetFile); //save the file to here
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, function($resource, $download_size, $downloaded_size, $upload_size, $uploaded_size) use ($download_id) {
if ($download_size == 0) {
$progress = 0;
} else {
$progress = round($downloaded_size * 100/$download_size);
}
// if download complete trigger completed function
if($progress == 100) {
self::DownloadCompleted($download_id);
}
\t \t \t \t
});
$curl = curl_exec($ch);
Дубликат http://stackoverflow.com/questions/6877930/stop-a-curl-transfer-in-the-middle :) –
Похожие проблемы. Решение не было опубликовано. И это было с 6 лет назад .... – cantaffordretail
Вы попробовали предложение о CURLOPT_WRITEFUNCTION ('Он должен вернуть точное количество записанных байт или передача будет прервана с ошибкой')? – Wizard