PHP-файл_get_contents иногда возвращает 502 на 1 из 2 серверов

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

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

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

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

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

Warning: file_get_contents(mirror.facebook.net/centos/timestamp.txt): Failed to open stream: HTTP request failed! HTTP/1.0 502 Bad Gateway

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

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

[EDIT] Я реализовал отслеживание ошибок и времени, как указано ниже.

Сначала код:

$t0 = microtime(true);
$jsonString = file_get_contents($pageUrl);
if ($jsonString === false) {
    $t1 = microtime(true);
    var_dump(sprintf(
        'Fehler beim Abruf der URL %s',
        $pageUrl,
    ));
    var_dump($t1 - $t0);
    var_dump(error_get_last());

    return 0;
}

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

array(4) {
  ["type"]=>
  int(2)
  ["message"]=>
  string(145) "file_get_contents(https://www.example.com/): Failed to open stream: HTTP request failed! HTTP/1.0 502 Bad Gateway
"
  ["file"]=>
  string(62) "/path/to/src/Service/WebcrawlerService.php"
  ["line"]=>
  int(61)
}

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

0
задан 18 October 2021 в 18:43
1 ответ

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

$t0 = microtime(true);
if (($data = @file_get_contents("http://mirror.facebook.net/centos/timestamp.txt")) === false) {
    $t1 = microtime(true);
    var_dump($t1 - $t0);  // duration
    var_dump(error_get_last());
}

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

0
ответ дан 18 October 2021 в 19:47

Теги

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