卷曲网站优化并选择每隔 URL 卷曲
Curl website optimizing and selecting every other URL to be curled
我正在尝试平衡 curled 网站上的负载,并在每个其他请求调用上使用不同的地址。这两个示例具有相同的结果,但只是 运行 不同的服务器。每次使用 curl 时,我都想让我的 curl 不同 url。
例如:
- 第一个请求连续使用第一个 url 到 curl,
- 第二个请求连续使用第二个 url 到 curl,
- 第三个请求连续使用第一个 url 到 curl,
- 第 4 个请求连续使用第 2 个 url 到 curl,
等等..
我怎样才能达到这个结果?谢谢。
如前所述,您可以使用 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);
我正在尝试平衡 curled 网站上的负载,并在每个其他请求调用上使用不同的地址。这两个示例具有相同的结果,但只是 运行 不同的服务器。每次使用 curl 时,我都想让我的 curl 不同 url。
例如:
- 第一个请求连续使用第一个 url 到 curl,
- 第二个请求连续使用第二个 url 到 curl,
- 第三个请求连续使用第一个 url 到 curl,
- 第 4 个请求连续使用第 2 个 url 到 curl,
等等..
我怎样才能达到这个结果?谢谢。
如前所述,您可以使用 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);