php脚本多进程请求api的限流
$leftime = $objCache->ttl($questratekey); if ($leftime <= 0) { $objCache->set($questratekey,0); $objCache->expire($questratekey, 1); } foreach ($answerInfo as $aresult) { Util_Common::getMoveScriptTime(); //-------------------------------限流的逻辑--------------------- $rate = $objCache->get($questratekey); Util_Common::writeScriptFileLog(self::$filelog,'++++++('.$examtype."):(".$rate.")"); if ($rate >= 85) { Util_Common::writeScriptFileLog(self::$filelog,"------(".$examtype."):(".$rate.")"); sleep(1); } while(true) { $leftime = $objCache->ttl($questratekey); Util_Common::writeScriptFileLog(self::$filelog,">>>>>:(".$examtype."):(".$irate.'):('.$leftime.")"); if ($leftime <= 0) { $objCache->set($questratekey,0); $objCache->expire($questratekey, 1); } $irate = $objCache->incr($questratekey); if ($irate > 85) { Util_Common::writeScriptFileLog(self::$filelog,"^^^^^^:(".$examtype."):(".$irate.")"); sleep(1); } else { break; } } $leftime = $objCache->ttl($questratekey); Util_Common::writeScriptFileLog(self::$filelog,"*******:(".$examtype."):(".$irate.'):('.$leftime.")"); if ($leftime <= 0) { $objCache->set($questratekey,0); $objCache->expire($questratekey, 1); } //-------------------------------------限流-------------------------------------
rpc_api("www.baidu.com"); //每秒最多发出85个请求
php limit.php 14
php limit.php 15
php limit.php 17
上面速率限制改成了3测试如下