This commit is contained in:
@@ -81,42 +81,50 @@ class TestProxies extends Command
|
||||
|
||||
protected function testProxy($proxy, &$results)
|
||||
{
|
||||
return new \GuzzleHttp\Promise\Promise(function() use ($proxy, &$results) {
|
||||
try {
|
||||
$client = new \GuzzleHttp\Client([
|
||||
'proxy' => $proxy->proxy,
|
||||
'timeout' => $this->timeout,
|
||||
'verify' => false,
|
||||
'http_errors' => false
|
||||
]);
|
||||
$client = new \GuzzleHttp\Client([
|
||||
'timeout' => $this->timeout,
|
||||
'verify' => false,
|
||||
'http_errors' => false
|
||||
]);
|
||||
|
||||
$response = $client->get($this->testUrl);
|
||||
return $client->getAsync($this->testUrl, [
|
||||
'proxy' => $proxy->proxy
|
||||
])->then(
|
||||
function($response) use ($proxy, &$results) {
|
||||
$body = json_decode($response->getBody(), true);
|
||||
|
||||
if ($response->getStatusCode() === 200 && isset($body['unique_id'])) {
|
||||
// Proxy is working, increase score
|
||||
$proxy->increment('score');
|
||||
$proxy->update(['last_tested_at' => now()]);
|
||||
$results['working']++;
|
||||
} else {
|
||||
// Proxy returned invalid response
|
||||
$proxy->decrement('score');
|
||||
$proxy->update(['last_tested_at' => now()]);
|
||||
$results['failed']++;
|
||||
}
|
||||
} catch (\GuzzleHttp\Exception\ConnectException $e) {
|
||||
// Connection failed
|
||||
$proxy->decrement('score');
|
||||
$results['failed']++;
|
||||
} catch (\GuzzleHttp\Exception\RequestException $e) {
|
||||
if ($e->getCode() === CURLE_OPERATION_TIMEDOUT) {
|
||||
// Request timed out
|
||||
$proxy->decrement('score');
|
||||
$results['timeout']++;
|
||||
} else {
|
||||
// Other request error
|
||||
},
|
||||
function($exception) use ($proxy, &$results) {
|
||||
if ($exception instanceof \GuzzleHttp\Exception\ConnectException) {
|
||||
// Connection failed
|
||||
$proxy->decrement('score');
|
||||
$proxy->update(['last_tested_at' => now()]);
|
||||
$results['failed']++;
|
||||
} elseif ($exception instanceof \GuzzleHttp\Exception\RequestException) {
|
||||
if ($exception->getCode() === CURLE_OPERATION_TIMEDOUT) {
|
||||
// Request timed out
|
||||
$proxy->decrement('score');
|
||||
$proxy->update(['last_tested_at' => now()]);
|
||||
$results['timeout']++;
|
||||
} else {
|
||||
// Other request error
|
||||
$proxy->decrement('score');
|
||||
$proxy->update(['last_tested_at' => now()]);
|
||||
$results['failed']++;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user