卷曲网站优化和选择每隔一个URL要卷曲



我正在努力平衡卷曲网站的负载,并在每隔一次请求调用中使用不同的地址。两个示例的结果相同,但只是运行不同的服务器。每次使用curl时,我想让我的curl有不同的url。

例如:

  • 第一个请求使用行url中的第一个进行卷曲
  • 第二个请求使用行url中的第二个进行卷曲
  • 第三个请求使用行url中的第一个进行卷曲
  • 第四个请求使用行url中的第二个进行卷曲

等等。。

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

如前所述,您可以使用模运算符来确定要使用哪个键。

它看起来如下:

<?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);

最新更新