2017-08-03 114 views
-1

如果其中一個請求收到狀態碼429,是否可以終止/停止多捲曲請求?PHP正在進行多捲曲請求

我一直在試圖找到解決方案,因爲我從API中提取數據,並且需要避免超過速率限制。

這些請求是異步的,所以我不確定我會如何做到這一點。

回答

1

好,你應該能夠用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。

+0

謝謝,似乎停止了大多數請求,但並非全部,比我想象的更好。我使用memcache來存儲變量並檢查它,而不是使用abort變量。希望能夠阻止我獲得太多的429個響應,有點難以實現具有異步請求的速率限制器。 – user2909323