Puncte:0

PHP file_get_contents returnează uneori 502 pe 1 din 2 Servere

drapel de

Am două servere virtuale.

Vechiul: Ubuntu 12.04 cu PHP 7.2. Noul: CentOS 7.9 cu PHP 8.0.

Pe ambele servere rulează aceeași aplicație. Un cron primește cu minut câteva detalii de pe un alt site web. similar cu următorul cod

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

Pe vechiul server a funcționat bine. Nu am avut niciodată probleme. Pe noul server, am uneori acest mesaj

Avertisment: file_get_contents(mirror.facebook.net/centos/timestamp.txt): Nu s-a putut deschide fluxul: Solicitarea HTTP a eșuat! HTTP/1.0 502 Gateway greșit

Nu am idee de ce se întâmplă asta. Afectează aproximativ 1% din apeluri.

Are cineva idee unde as putea sa caut si ce as putea face pentru a rezolva problema?

[EDITAȚI | ×] Am implementat eroarea și urmărirea timpului așa cum este menționat mai jos.

Mai intai codul:

$t0 = microtimp(adevărat);
$jsonString = file_get_contents($pageUrl);
dacă ($jsonString === fals) {
    $t1 = microtimp(adevărat);
    var_dump(sprintf(
        „Fehler beim Abruf der URL %s”,
        $pageUrl,
    ));
    var_dump($t1 - $t0);
    var_dump(error_get_last());

    returnează 0;
}

Acum rezultatul.

matrice(4) {
  ["tip"] =>
  int(2)
  [„mesaj”] =>
  string(145) "file_get_contents(https://www.example.com/): Nu s-a putut deschide fluxul: Solicitarea HTTP a eșuat! HTTP/1.0 502 Gateway incorect
"
  [„fișier”] =>
  string(62) „/path/to/src/Service/WebcrawlerService.php”
  ["linie"] =>
  int(61)
}

Rezultatul, din păcate, NU oferă multe detalii. Mai este 502

Puncte:0
drapel de

Bănuiesc că noul tău server atinge un timeout sporadic al rețelei (DNS?). Pentru a săpa mai adânc, încercați să înregistrați o eroare detaliată imediat după ce a eșuat file_get_contents() și durata cererii înainte de eșec:

$t0 = microtimp(adevărat);
dacă (($date = @file_get_contents ("http://mirror.facebook.net/centos/timestamp.txt")) === false) {
    $t1 = microtimp(adevărat);
    var_dump($t1 - $t0); // durată
    var_dump(error_get_last());
}

Aceste rezultate combinate vă pot oferi indicii despre pașii suplimentari.

drapel de
Multumesc pentru idee. Va implementa, vede și postează ce rezultat va oferi
drapel de
După cum am menționat mai sus, am adăugat rezultatele mele. Încă nu mai multe detalii. Alte sugestii?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.