Задать вопрос
@lasthero67

Какое условие поставить при недосутпности адреса в curl?

Здравствуйте. Имеется WordPress 5.8.2. На сайте я использую библиотеку curl со следующей конструкцией
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url . '?' . http_build_query($params));
$response = curl_exec($ch);
$data = new SimpleXMLElement($response);
print_r($response);
curl_close($ch);


где url - это адрес запроса, $params - параметры запроса. В последнее время страницы с curl периодически перестали открываться (WordPress пишет "На сайте возникла критическая ошибка."). Это происходит кратковременно, буквально при перезагрузке страницы все загружается. Предполагаю, что такая ошибка возникакт, когда адрес запроса недоступен. Как поставить условие, чтобы при недоступности адреса запроса дальнейшая обработка не происходила и страница оставалась доступной?
  • Вопрос задан
  • 234 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
@rPman
после вызова curl_exec сделай вызов curl_getinfo и проверь что именно тебе возвращает сервер, в частности CURLINFO_HTTP_CODE (или лучше CURLINFO_RESPONSE_CODE) ($info['http_code']) должен быть 200, если не так, то смотри
CURLINFO_SSL_VERIFYRESULT (список кодов смотри в комментариях) и CURLINFO_PROXY_SSL_VERIFYRESULT если используется прокси
смотри ответ CURLINFO_HTTP_CONNECTCODE, CURLINFO_OS_ERRNO
CURLINFO_CONDITION_UNMET

p.s. так же проверь $response, если он пустой то нет смысла пытаться его распарсить на xml, это тоже ошибка (это значит сервер вернул пустой ответ при это м не сгенерировав ошибки, такое бывает когда криворукие бакэнд программисты реализуют api)
Ответ написан
@spaceatmoon
Используй всегда ограничение на время ожидания ответа.

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); //5 секунд
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы