卷曲网站优化并选择每隔 URL 卷曲

Curl website optimizing and selecting every other URL to be curled

我正在尝试平衡 curled 网站上的负载,并在每个其他请求调用上使用不同的地址。这两个示例具有相同的结果,但只是 运行 不同的服务器。每次使用 curl 时,我都想让我的 curl 不同 url。

例如:

等等..

我怎样才能达到这个结果?谢谢。

如前所述,您可以使用 modulo 运算符来确定要使用的键。

它看起来像下面这样:

<?php
$urls = [
    'http://www.example.com',
    'http://www.example.com2',
];

$limit = 100;

for( $x=0; $x<=$limit; $x++ ){

    $key = $x % 2;//modulo

    $url = $urls[$key];

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');

    $result = curl_exec($ch);

    curl_close($ch);
}

假设您知道它是哪个请求,模数运算符可以确定要使用数组中的哪个位置。 0 和 1 的数组键只是为了解释目的。这些是自动生成的。

取模运算符本质上就是第一个数除以后面的数后的余数。因此,当请求为 46 且数组中有 2 个网站时,余数将为 0,因为 46/2 为 23,没有余数。对于 3 个网站,46/3 将重复 15.3,这意味着模数将为 45,余数为 1。返回 1,它将取位置 1.

处的数组值

例如假设请求编号为:

// This should change/increment for you
 $requestCounter = 1;
 $arrayOfWebsites = array(
    0       =>  'http://website1.com',
    1       =>  'https://website2.com'
 );

 $websiteToBeUsed = $arrayOfWebsites[ $requestCounter % count( $arrayOfWebsites ) ];
 var_dump( $websiteToBeUsed );
 // Your code
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $websiteToBeUsed );
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
 $result = curl_exec($ch);
 curl_close($ch);