Рейтинг:0

PHP file_get_contents иногда возвращает 502 на 1 из 2 серверов

флаг de

У меня есть два виртуальных сервера.

Старый: Ubuntu 12.04 с PHP 7.2. Новое: CentOS 7.9 с PHP 8.0.

На обоих серверах работает одно и то же приложение. Cron ежеминутно получает некоторые данные с другого веб-сайта. аналогичный следующему коду

file_get_contents("http://mirror.facebook.net/centos/timestamp.txt")

На старом сервере все работало. У меня никогда не было проблем. На новом сервере у меня иногда появляется это Сообщение

Предупреждение: file_get_contents(mirror.facebook.net/centos/timestamp.txt): Не удалось открыть поток: Ошибка HTTP-запроса! HTTP/1.0 502 Неверный шлюз

Я понятия не имею, почему это происходит. Это затрагивает около 1% звонков.

Есть ли у кого-нибудь идея, где я могу посмотреть и что я могу сделать, чтобы решить проблему?

[РЕДАКТИРОВАТЬ] Я реализовал отслеживание ошибок и времени, как указано ниже.

Сначала код:

$t0 = микровремя (истина);
$jsonString = file_get_contents($pageUrl);
если ($jsonString === false) {
    $t1 = микровремя (истина);
    var_dump(sprintf(
        'Fehler beim Abruf der URL %s',
        $страницаURL,
    ));
    var_dump($t1 - $t0);
    var_dump(error_get_last());

    вернуть 0;
}

Теперь результат.

массив (4) {
  ["тип"]=>
  интервал (2)
  ["сообщение"]=>
  string(145) "file_get_contents(https://www.example.com/): Не удалось открыть поток: Ошибка HTTP-запроса! HTTP/1.0 502 Bad Gateway
"
  ["файл"]=>
  строка (62) "/path/to/src/Service/WebcrawlerService.php"
  ["строка"]=>
  инт (61)
}

Результат, к сожалению, НЕ предоставляет много подробностей. Это все еще 502

Рейтинг:0
флаг de

Я подозреваю, что ваш новый сервер время от времени выходит из строя (DNS?). Чтобы копнуть глубже, попробуйте записать подробную ошибку сразу после сбоя. file_get_contents() и продолжительность запроса до отказа:

$t0 = микровремя (истина);
если (($data = @file_get_contents("http://mirror.facebook.net/centos/timestamp.txt")) === ложь) {
    $t1 = микровремя (истина);
    var_dump($t1 - $t0); // продолжительность
    var_dump(error_get_last());
}

Объединение этих выходных данных может дать вам подсказки о дальнейших шагах.

флаг de
Спасибо за идею. Будет реализовано, посмотрите и опубликуйте, какой результат это даст
флаг de
Как упоминалось выше, я добавил свои результаты. Еще не подробнее. Любые другие предложения?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.