2014-04-30 15 views
7

Tôi đang cố gắng cập nhật một số giá trị từ một máy chủ này sang máy chủ khác bằng lệnh cron. Tôi sử dụng file_get_contents().file_get_contents(): php_network_getaddresses: getaddrinfo không thành công

Điều kỳ lạ là thỉnh thoảng điều này không thành công. Một phút nó hoạt động, một phút nữa nó sẽ không hoạt động. tôi nhận được hai lỗi sau đây:

PHP Warning: file_get_contents(): php_network_getaddresses: getaddrinfo thất bại: Tên hoặc dịch vụ không được biết

PHP Warning: file_get_contents(): thất bại trong việc mở dòng: php_network_getaddresses: getaddrinfo thất bại : Tên hoặc dịch vụ không được biết

và:

PHP Warning: file_get_contents(): php_ network_getaddresses: getaddrinfo thất bại: Không có địa chỉ gắn liền với tên máy

PHP Warning: file_get_contents(): thất bại trong việc mở dòng: php_network_getaddresses: getaddrinfo thất bại: Không có địa chỉ gắn liền với tên máy

Tôi đã đăng nhập vào máy chủ đó trải nghiệm vấn đề này. Sử dụng ping hoặc traceroute hoạt động tốt, vì vậy tôi đã loại trừ các vấn đề DNS. Tôi cũng đã thêm các máy chủ tên miền của Google chỉ để chắc chắn. Một máy chủ thứ ba sử dụng cùng một mã chính xác không có vấn đề này, do đó, nó có vẻ là một vấn đề về kết thúc "gọi", không phải là "đáp ứng" kết thúc. Thay thế tên máy chủ bằng IP không phải là một tùy chọn cho trường hợp này.

Có ai biết cách giải quyết vấn đề này không?

+0

Điều này xảy ra trên các máy chủ sống? Nếu chúng được lưu trữ trên máy chủ, tôi sẽ nói điều này với sự hỗ trợ của chúng. – hek2mgl

+0

Bản sao có thể có của [PHP: file \ _get \ _contents ($ loc) không thành công] (https://stackoverflow.com/questions/542046/php-file-get-contentsloc-fails) – dotancohen

Trả lời

0

Điều này là do giới hạn kết nối trên máy chủ thứ 2 và tôi tin rằng bạn đã đặt khoảng thời gian ngắn cho công việc cron. Như bạn biết, máy chủ điều khiển các kết nối liên tiếp từ mỗi IP. Bạn có thể chọn khoảng thời gian dài hơn để giải quyết vấn đề này.

1

Tra cứu tên có vẻ thất bại trong khi đôi khi chạy trong một công việc định kỳ. Tôi đã chỉ nhìn thấy nó với tên trong/etc/hosts, nhưng tôi đã không kiểm tra tên DNS.

Tôi đã nhìn thấy nó bằng cách gửi email và thời gian chờ kết nối SMTP.

Tôi không biết nguyên nhân chính xác, nhưng trong trường hợp của tôi, tôi nhận được mã SMTP để kết nối với 127.0.0.1 thay vì localhost và sự cố đã biến mất.

10

Trong trường hợp của tôi, sự cố là Apache nhận được các mục nhập DNS từ /etc/resolv.conf khi bắt đầu. Vào thời điểm tôi bắt đầu Apache, mạng vẫn chưa được thiết lập. Khởi động lại Apache (sau khi kết nối mạng được cấu hình) đã giải quyết được vấn đề cho tôi.

tôi đã giải thích trường hợp chi tiết hơn trên blog của tôi gửi http://diogomelo.net/blog/16/Warning-file_get_contents-php_network_getaddresses-getaddrinfo-failed-No-address-associated-with-hostname

+0

Cảm ơn bạn rằng đó là giải pháp cuối cùng của tôi . –

+0

Đó là thông tin rất quan trọng. Cảm ơn bạn.! – vishva8kumara

+0

Tôi sẽ thứ ba: Đó cũng là vấn đề của tôi. Có khả năng vì tôi đang phát triển trên máy ảo nên mọi thứ thay đổi khi tôi tiếp tục VM. –

Các vấn đề liên quan