【发布时间】:2017-08-04 04:12:44
【问题描述】:
如果其中一个请求收到状态码 429,是否可以终止/停止多个 curl 请求?
当我从 API 提取数据并且需要避免超过速率限制时,我一直在尝试寻找解决方案。
这些请求是异步的,所以我不确定该怎么做。
【问题讨论】:
标签: php http curl nginx curl-multi
如果其中一个请求收到状态码 429,是否可以终止/停止多个 curl 请求?
当我从 API 提取数据并且需要避免超过速率限制时,我一直在尝试寻找解决方案。
这些请求是异步的,所以我不确定该怎么做。
【问题讨论】:
标签: php http curl nginx curl-multi
好吧,您应该能够使用 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 来限制传输的速度,如果你超过了速度限制
编辑:请注意,您还需要将 CURLOPT_NOPROGRESS 设置为 false 才能完全调用 CURLOPT_PROGRESSFUNCTION。
【讨论】: