繁体   English   中英

如何防止PHP curl多重连接

[英]How to prevent php curl from multi connecting

我构建了一个php cli脚本,使用cURL将来自Twitter流API的推文输出到命令行。 当我启动脚本时,它开始输出tweet,但是每发出50条tweet都会出现以下错误:“在那儿容易,Turbo。最近有太多请求。增强您的镇定性。”,没有标题,没有其他输出,只是一个字符串。

我假设我建立了太多的连接,但是我只初始化了一次cURL。 这是我的代码:

//initialize cURL connection
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://stream.twitter.com/1.1/statuses/filter.json?  follow=34572451,27260086');
curl_setopt($ch, CURLOPT_USERPWD, 'USERNAME:PASSWORD');
curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'saveTweet');
curl_setopt($ch, CURLOPT_MAXCONNECTS, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_FORBID_REUSE, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Cache-Control: max-age=0', 'Connection: keep-alive', 'Keep-Alive: 3600'));

//then loop the execution to retrieve tweets
while(1){
    echo $i++.'->'; //echo number, so we know it stops at 50

    try {
        //calls saveTweet() as callback, which only purpose is to output the tweet
        curl_exec($ch); 
    }
    catch(Exception $e) {
        //echo error described above
        echo $e->getMessage(); 
        break;
    }
}

如何防止cURL发出太多请求(如果这样做,我真的不知道确切的问题)? 或者如何防止出现上述错误?

您可以运行无休止的循环,就像您需要不时 睡觉和不睡觉

sleep(1);

您还希望查看count选项count

指定要检索的记录数。 必须小于或等于200。默认值为20。

这样,您可以通过单个请求获取更多记录...

显然您打开了太多连接:

curl_setopt($ch, CURLOPT_FORBID_REUSE, true);

您可以合并连接以进行重用并对其进行测试吗?

TPS:事务/第二DOS:拒绝服务; 用完资源

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM