CURL в PHP – как выделить ошибки прокси?

Использую cURL в PHP для работы с API, соединение идет через прокси.
На рабочей машине (Windows - PHP 7.1.0) в случае недоступности прокси, curl_error() возвращает:
Failed to connect to 11.22.33.44 port 1234: Timed out
Где 11.22.33.44, это адрес прокси. А в случае, если недоступен именно сайт, то ошибка будет другой. Таким образом, я могу анализировать этот вывод и разделять ситуации, когда недоступен сам ресурс и когда недоступен прокси.

А вот на сервере (Ubuntu - PHP 7.2.5), когда недоступен прокси, я получаю только: Connection timed out after 100000 milliseconds

В мануале PHP написано, что curl_error возвращает только последнюю ошибку. А как получить все?
В мануале cURL есть про CURLOPT_ERRORBUFFER, но я так понимаю, это отсутствует в PHP.

Может быть, есть какие-то еще способы решить вопрос с мониторингом прокси?

Можно достаточно просто пропинговать прокси так:
$proxy = '98.255.255.255:8080';
$timeout = 5;
$splited = explode(':',$proxy);
if($con = @fsockopen($splited[0], $splited[1], $errorNumber, $errorMessage, $timeout))
{
echo 'Connection successful, PROXY works!';
} else {
echo $errorNumber . ' ' . $errorMessage;

Так можно понять что совсем все плохо. Но мне хочется видеть еще и "здоровье" прокси. Не продали ли мне шеред прокси, вместо индивидуального. Некоторые провайдеры прокси перегружены, пинг пройдет, а потом случится обрыв по время реальной работы. Мой скрипт делает около 100 запросов с течение нескольких минут. И прокси может дать сбой в любой момент, я хочу это видеть. А пинговать не только в начале работы скрипта, а перед каждым запросом, мне кажется перебором. И в любом случае бывают ситуации, когда обрыв происходит уже во время соединения с сайтом (по вине прокси), вот именно это интересно отследить.
  • Вопрос задан
  • 265 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы