mirror of
https://github.com/php-curl-class/php-curl-class.git
synced 2026-08-27 18:50:43 +00:00
Fix #626: Add MultiCurl example for retrying with a new proxy
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
require __DIR__ . '/../vendor/autoload.php';
|
||||
|
||||
use Curl\ArrayUtil;
|
||||
use Curl\MultiCurl;
|
||||
|
||||
$proxies = array(
|
||||
'someproxy.com:9999',
|
||||
'someproxy.com:80',
|
||||
'someproxy.com:443',
|
||||
);
|
||||
$max_retries = 3;
|
||||
|
||||
$multi_curl = new MultiCurl();
|
||||
$multi_curl->setProxyType(CURLPROXY_SOCKS5);
|
||||
$multi_curl->setProxies($proxies);
|
||||
|
||||
$multi_curl->setRetry(function ($instance) use ($proxies, $max_retries) {
|
||||
if ($instance->retries < $max_retries) {
|
||||
$new_random_proxy = ArrayUtil::arrayRandom($proxies);
|
||||
$instance->setProxy($new_random_proxy);
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
$multi_curl->addGet('https://httpbin.org/ip');
|
||||
$multi_curl->addGet('https://httpbin.org/ip');
|
||||
$multi_curl->addGet('https://httpbin.org/ip');
|
||||
|
||||
$multi_curl->complete(function ($instance) {
|
||||
echo
|
||||
'curl id ' . $instance->id . ':' . "\n" .
|
||||
'- ip: ' . $instance->response->origin . "\n" .
|
||||
'- proxy: ' . $instance->getOpt(CURLOPT_PROXY) . "\n" .
|
||||
'- url: ' . $instance->effectiveUrl . '' . "\n" .
|
||||
'';
|
||||
});
|
||||
|
||||
$multi_curl->start();
|
||||
Reference in New Issue
Block a user