Điểm:0

PHP file_get_contents đôi khi trả về 502 trên 1 trong 2 Máy chủ

lá cờ de

Tôi có hai máy chủ ảo.

Phiên bản cũ: Ubuntu 12.04 với PHP 7.2. Phiên bản mới: CentOS 7.9 với PHP 8.0.

Trên cả hai máy chủ, cùng một ứng dụng đang chạy. Một cron đang nhận được một số chi tiết từ một trang web khác. tương tự như đoạn mã sau

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

Trên máy chủ cũ, nó hoạt động tốt. Tôi chưa bao giờ có vấn đề. Trên máy chủ mới, đôi khi tôi có Thông báo này

Cảnh báo: file_get_contents(mirror.facebook.net/centos/timestamp.txt): Không thể mở luồng: Yêu cầu HTTP không thành công! HTTP/1.0 502 Cổng Xấu

Tôi không biết tại sao điều này lại xảy ra. Nó ảnh hưởng đến khoảng 1% các cuộc gọi.

Có ai có ý tưởng nơi tôi có thể tìm kiếm và những gì tôi có thể làm để giải quyết vấn đề không?

[CHỈNH SỬA] Tôi đã triển khai theo dõi lỗi và thời gian như được đề cập bên dưới.

Đầu tiên mã:

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

    trả về 0;
}

Bây giờ kết quả.

mảng(4) {
  ["loại"]=>
  int(2)
  ["tin nhắn"]=>
  string(145) "file_get_contents(https://www.example.com/): Không thể mở luồng: Yêu cầu HTTP không thành công! HTTP/1.0 502 Bad Gateway
"
  ["tập tin"]=>
  chuỗi (62) "/path/to/src/Service/WebcrawlerService.php"
  ["dòng"]=>
  int(61)
}

Thật đáng buồn là kết quả KHÔNG cung cấp thêm nhiều chi tiết. Vẫn là 502

Điểm:0
lá cờ de

Tôi nghi ngờ máy chủ mới của bạn đang gặp phải một số thời gian chờ mạng lẻ tẻ (DNS?). Để tìm hiểu sâu hơn, hãy thử ghi lại lỗi chi tiết ngay sau khi thất bại file_get_contents() và thời lượng của yêu cầu trước khi thất bại:

$t0 = microtime(true);
if (($data = @file_get_contents("http://mirror.facebook.net/centos/timestamp.txt")) === false) {
    $t1 = microtime(true);
    var_dump($t1 - $t0); // khoảng thời gian
    var_dump(error_get_last());
}

Những đầu ra này kết hợp có thể cung cấp cho bạn gợi ý về các bước tiếp theo.

lá cờ de
Cảm ơn vì ý tưởng. Sẽ triển khai xem và đăng kết quả nó sẽ cung cấp
lá cờ de
Như đã đề cập ở trên, tôi đã thêm kết quả của mình. Vẫn chưa có thêm chi tiết. Bất cứ một đề nghị nào khác?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.