我正在使用cURL来获取我已经存储在数据库中的20,000多个域名的一些排名数据.
我正在使用的代码是http://semlabs.co.uk/journal/object-oriented-curl-class-with-multi-threading.
数组$ competRequests是20,000个网站排名的competition.com api请求.
这是一个示例请求:http: //apps.compete.com/sites/stackoverflow.com/trended/rank/?apikey = xxxx&start_date = 201207&end_date = 201208&jsonp = ";
由于有20,000个这样的请求,我想将它们分解成块,所以我使用以下代码来实现这一点:
foreach(array_chunk($competeRequests, 1000) as $requests) {
foreach($requests as $request) {
$curl->addSession( $request, $opts );
}
}
Run Code Online (Sandbox Code Playgroud)
这适用于以1,000个批量发送请求,但脚本执行时间太长.我已将max_execution_time增加到10分钟以上.
有没有办法从我的阵列发送1,000个请求然后解析结果然后输出状态更新然后继续下一个1,000直到数组为空?到目前为止,屏幕只是在脚本执行的整个时间内保持白色,这可能超过10分钟.
Man*_*ani 14
以上接受的答案已经过时,因此,必须正确回答正确的答案.
http://php.net/manual/en/function.curl-multi-init.php
现在,PHP支持同时获取多个URL.
有人写的功能非常好, http://archevery.blogspot.in/2013/07/php-curl-multi-threading.html
你可以使用它.
https://github.com/krakjoe/pthreads

您可能使用PHP进行线程化,所描述的代码只是可怕的线程编程,我不建议您这样做,但是我想向您展示20,000个线程的开销……这是18秒,在我当前的硬件上是具有8gig ram的Intel G620(双核),在服务器硬件上,您可以预期更快的结果...如何执行此类任务取决于您的资源以及所请求服务的资源...
| 归档时间: |
|
| 查看次数: |
30094 次 |
| 最近记录: |