小编use*_*347的帖子

使用PHP进行cURL多线程处理

我正在使用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分钟.

php curl nginx

9
推荐指数
3
解决办法
3万
查看次数

使用cURL在PHP中同时发出HTTP请求

我正在尝试使用相当大的域列表查询每个域的等级,使用matches.com API,如下所示 - > https://www.compete.com/developer/documentation

我编写的脚本采用了我填充的域的数据库,并发起了一个cURL请求,以争夺网站的排名.我很快意识到这很慢,因为每次请求都是一次发送的.我做了一些搜索并发现了这篇文章 - > http://www.phpied.com/simultaneuos-http-requests-in-php-with-curl/,它解释了如何使用cURL在PHP中同时执行HTTP请求.

不幸的是,该脚本将采用25,000个域的数组并尝试一次处理它们.我发现1,000个批次的工作非常好.

任何想法如何发送1,000个查询到compete.com然后等待完成并发送下一个1,000直到数组为空?这是我到目前为止所做的工作:

<?php

//includes
include('includes/mysql.php');
include('includes/config.php');

//get domains
$result = mysql_query("SELECT * FROM $tableName");
while($row = mysql_fetch_array($result)) {
    $competeRequests[] = "http://apps.compete.com/sites/" . $row['Domain'] . "/trended/rank/?apikey=xxx&start_date=201207&end_date=201208&jsonp=";
}

//first batch
$curlRequest = multiRequest($competeRequests);
$j = 0;
foreach ($curlRequest as $json){
    $j++;
    $json_output = json_decode($json, TRUE);
    $rank = $json_output[data][trends][rank][0][value];

    if($rank) {
        //Create mysql query
        $query = "Update $tableName SET Rank = '$rank' WHERE ID  = '$j'";

        //Execute the query
        mysql_query($query);
        echo $query …
Run Code Online (Sandbox Code Playgroud)

php curl loops

1
推荐指数
1
解决办法
2124
查看次数

标签 统计

curl ×2

php ×2

loops ×1

nginx ×1