Можно ли убить / остановить несколько запросов curl, если один из запросов получает код состояния 429?
Я пытался найти решение этой проблемы, когда я извлекаю данные из API, и мне нужно избегать превышения ограничения скорости.
Эти запросы асинхронные, поэтому я не уверен, как бы я это сделал.
ну, вы должны иметь возможность отменить их по своему желанию с помощью CURLOPT_PROGRESSFUNCTION, иметь глобальную переменную для более или менее отменной передачи, функцию, которая ее импортирует (с global $var
синтаксис), и заставить его возвращать 1, когда его время отменить, например, $abort=false;ecurl_setopt($ch,CURLOPT_PROGRESSFUNCTION,function($a,$b,$c,$d,$e){global $abort;return (int)!$abort;});
— тогда просто сделайте $ abort = true; когда пришло время их прервать. Тем не менее, вы можете использовать CURLOPT_MAX_RECV_SPEED_LARGE, чтобы ограничить скорость передачи, если вы превышаете ограничение скорости.
edit: обратите внимание, что вам также нужно установить CURLOPT_NOPROGRESS в false, чтобы CURLOPT_PROGRESSFUNCTION вызывался вообще.
Других решений пока нет …