Проблема, с которой я столкнулся, заключается в том, что я пытаюсь выполнить запрос curl к серверу и перенаправляется на страницу 504
Я пытаюсь уловить ошибку следующим образом:
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode==504){
header("Location: myOwnErrorPageFor504.php");
}
Этот код, похоже, перехватывает другие коды ошибок, например, 200 прекрасно. Я думаю, что проблема в том, что, как только 504, он перенаправляет на эту страницу или что-то еще, прежде чем мой код отключается, чтобы проверить, вернул ли он 504? Я просто хочу сделать что-нибудь, если вернется 504.
Я использую apache и php 7.0, если это актуально. Это был принятый ответ на пару других вопросов, подобных этому, но он не работает для меня, поэтому я спрашиваю здесь.
Обратите внимание на мои спецификации Apache. Время ожидания истекает примерно через 50 секунд.
Тайм-аут в моем апаче 300.
KeepAliveTimeout равен 5.
Для php: время ожидания сокета по умолчанию 120.
Так что я не знаю, мой ли это сервер. Кроме того, этот код запрашивает другой сервер, который также запрашивает другой сервер после этого. (это API, который затем запрашивает другой API, я его не написал, вот что он делает).
Для человека, который хочет полный код curl:
$ch = curl_init();
$headers = array(
'Content-Type: application/json',
$auth
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
$ch_error = curl_error($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode==504){
curl_close($ch);
header("Location: contactUs.php");
}
if ($ch_error) {
curl_close($ch);
return $ch_error;
} else {
curl_close($ch);
return $result;
}