Trong quá trình phát triển php+mysql, khi điền tên máy chủ để kết nối với cơ sở dữ liệu, máy cục bộ thường có thể sử dụng localhost hoặc 127.0.0.1. Trong quá trình ứng dụng thực tế, không tìm thấy bất thường nào trong hệ thống Linux, nhưng. trong hệ thống máy chủ Windows, có Khi viết localhost, phản hồi của trang web sẽ tương đối chậm. Nói chung, phải mất hơn 1 giây để hoàn thành một trang. Tôi đánh giá thời gian chạy chương trình từng bước và nhận thấy rằng đó là một vấn đề. khi kết nối với mysql. Phải mất gần 1 giây để thiết lập kết nối. Phải có Nếu có vấn đề, hãy tìm kiếm và thấy rằng tình trạng này có tồn tại. Đoạn trích như sau:

HTTP://blog.Sina.com.abilities/是/blog_6cost 5ah 76 tóc 0100 một bức tranh.HTML

Gần đây tôi thấy thời gian phản hồi của chương trình hơi chậm nên tôi loại bỏ dần dần và tính toán thời gian thực hiện của từng chương trình. Cuối cùng, tôi thấy lãng phí thời gian khi liên kết đến cơ sở dữ liệu. cơ sở dữ liệu nên tôi đặt nó xuống.

Ngày hôm sau, tôi test link từ xa tới cơ sở dữ liệu và nhận thấy thời gian thực hiện việc sử dụng IP để truy cập cơ sở dữ liệu rất ngắn và ngắn hơn rất nhiều so với khi tôi sử dụng localhost để kết nối cơ sở dữ liệu cục bộ. Vì vậy, chúng tôi có bài kiểm tra sau:

set_time_limit(0) ;
$localtime = 0 ;
for($i=1;$i<=50;$i++){
 $btime = get_microtime() ;   
 $conn = new mysqli("localhost","root","admin","") ;
 $conn-close() ;
 $etime = get_microtime() ;
 $localtime += $etime-$btime ;
}
$iptime =0 ;
for($i=1;$i<=50;$i++){
 $btime = get_microtime() ;   
 $conn = new mysqli("127.0.0.1","root","admin","") ;
 $conn-close() ;
 $etime = get_microtime() ;
 $iptime += $etime-$btime ;
}
echo "localhost时间损耗为:".($localtime)/$i."<br /" ;
echo "127.0.0.1时间损耗为:".($iptime/$i)."<br /" ;
function get_microtime(){
 list($micro,$time) = explode(" ",microtime());
 return $time+$micro ;
}


Kết quả đầu ra là: localhost mất thời gian là: 0,98833055122226

Mất thời gian của 127.0.0.1 là: 0,0039590807522044

 

Sẽ thật tuyệt nếu một chuyên gia có thể giúp trả lời câu hỏi này.

Tôi đoán có thể là do độ phân giải DNS hoặc độ phân giải localhost cần có thời gian. Hãy giải thích rằng tôi đang sử dụng hệ thống cửa sổ.

Giải thích lý do:

Đây thực sự là một vấn đề về phân tích cú pháp hệ điều hành. Để biết chi tiết, vui lòng tham khảo http://www.cnblogs.com/hayywcy/p/5341550.html.

Hôm nay tôi gặp một sự cố lạ khi truy cập localhost, nó báo không tìm thấy 404, nhưng vẫn truy cập được 127.0.0.1. Cuối cùng nguyên nhân đã được tìm ra là do Windows đã phân giải localhost thành địa chỉ ipv6::1 thay vì 127.0.0.1. Tôi đã kiểm tra các máy chủ và thấy rằng ipv6 đã bị chặn. Ngoài ra còn có localhost 127.0.0.1, nhưng nó không thể phân tích cú pháp bình thường. Baidu đã tìm kiếm rất lâu mà không có kết quả và cuối cùng đã tìm ra giải pháp trên Google bằng các phương pháp Internet khoa học để tránh bài đăng gốc bị mất, tôi đã đăng lại ở đây (địa chỉ bài đăng gốc: http://superuser.com/questions/. 436574/ipv4-vs-ipv6-ưu tiên-trong-windows-7/436944#436944).

Nội dung bài viết:

GIẢI PHÁP #1: THÊM CHÍNH SÁCH TIỀN TỐ ĐỂ ƯU TIÊN ĐỊA CHỈ IPV4 HƠN Bảng chính sách tiền tố IPV6 tương tự như bảng định tuyến, nó xác định địa chỉ IP nào được ưu tiên khi thực hiện kết nối. Lưu ý rằng mức ưu tiên cao hơn trong chính sách tiền tố được biểu thị bằng "ưu tiên" lớn hơn. giá trị, hoàn toàn ngược lại với giá trị "chi phí" của bảng định tuyến.

Bảng chính sách tiền tố mặc định của Windows:

C:\netsh giao diện ipv6 hiển thị tiền tố chính sách Truy vấn trạng thái hoạt động...

 Tiền tố ưu tiên  Nhãn 

 ----------  ------  -------------------------- ---

 50      0  ::1/128

 40      1  ::/0

 30      2  2002::/16

 20      3  ::/96

 10      4  ::ffff:0:0/96

  5      5  2001::/32 Lưu ý rằng địa chỉ IPv6 (::/0) được ưu tiên hơn địa chỉ IPv4 (::/96, ::ffff:0:0/96) .

 

Chúng ta có thể tạo một chính sách khiến đường hầm IPv6 của Hurricane Electric trở nên kém thuận lợi hơn bất kỳ địa chỉ IPv4 nào:

netsh giao diện ipv6 add prefixpolicy 2001:470::/32 3 6 2001:470::/32 là tiền tố của Hurricane Electric, 3 là Ưu tiên (rất thấp) và 6 là Nhãn.

Tôi có thể đã sử dụng một tiền tố chung chung hơn, nhưng tôi muốn đảm bảo rằng nếu và khi tôi nhận được kết nối IPv6 trực tiếp từ ISP, thì kết nối đó sẽ được ưu tiên hơn IPv4.

Nếu bạn điều chỉnh giải pháp này, bạn cần thay thế tiền tố IPv6 thích hợp thay vì tiền tố Hurricane Electric của tôi.

GIẢI PHÁP #2: Tinh chỉnh ĐĂNG KÝ ĐỂ WINDOWS LUÔN ƯU ĐÃI IPV4 HƠN IPV6

Giải pháp này chung chung hơn nhưng xâm lấn hơn và ít tuân thủ tiêu chuẩn hơn. Cuối cùng, Windows vẫn sẽ sửa đổi bảng chính sách tiền tố cho bạn.

Mở RegEdit, điều hướng đến HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters Tạo giá trị đăng ký DisabledComponents DWORD, đặt giá trị của nó thành 20 (Thập lục phân).

Xem Microsoft KB 929852 để biết thêm thông tin về khóa đăng ký này, đặc biệt nếu Tắt thành phần đã tồn tại trên hệ thống của bạn.

Theo bản dịch thì Windows có danh sách phân tích ưu tiên. Khi ipv6 có mức ưu tiên cao hơn ipv4 thì tình trạng tôi gặp phải hôm nay sẽ xảy ra (mặc dù vẫn chưa tìm ra nguyên nhân). Cách thứ nhất là thêm bản ghi có mức độ ưu tiên ipv4 cao hơn ipv6 vào bảng phân tích mức độ ưu tiên vì không hiểu nhiều từ nên không dám dùng vì sợ nhầm thông số. Mình đã giải quyết bằng cách thứ 2, đó là sửa đổi sổ đăng ký. Cách làm như sau (nếu không hiểu tiếng Anh thì không cần kiểm tra):

Mở sổ đăng ký, tìm khóa HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters và thêm một mục thuộc loại DWORD với tên DisableComponents (nếu đã có, bạn không cần thêm nó và thay đổi giá trị trực tiếp ). Sau đó sửa đổi giá trị thành 20 và loại giá trị thành thập lục phân. Thế là xong, hãy lưu sổ đăng ký và khởi động lại máy tính. Hãy thử ping localhost một lần nữa.


Để lại một câu trả lời