Tôi đang sử dụng Windows 7, Apache 2, PHP 5, MySQL 5, tất cả đều nằm trên cùng một máy. Tôi đã tìm thấy một vấn đề thú vị, tôi có đoạn mã sau:mysql_connect (localhost/127.0.0.1) chạy chậm trên nền tảng Windows
$sql = "select * from user1";
$conn = mysql_connect("localhost", "root", "xxxxxxxx");
mysql_select_db("test1");
mysql_query("set names utf8");
$result = mysql_query($sql, $conn);
while ($row = mysql_fetch_assoc($result)){
foreach ($row as $key => $value){
echo $key." => ".$value." || ";
}
echo "<br/>";
}
mysql_free_result($result);
mysql_close($conn);
Thời gian chạy cho đoạn code trên là hơn 1 giây.
Khi tôi sử dụng 127.0.0.1
thay vì localhost
, thời gian chạy là khoảng 10 ms.
Tôi cố gắng để tìm ra nguyên nhân sâu xa trên mạng Internet, và đây là kết quả:
thời gian gần đây tôi chuyển phát triển của tôi từ XP lên Windows 7 và thấy rằng các trang web tôi đã phát triển được dùng dài đến 5 giây tải. Điều này là không thể chấp nhận tất nhiên vì vậy tôi đã phải theo dõi vấn đề. Cuối cùng tôi đã theo dõi chức năng/phương thức vi phạm pdo :: construct. Tôi cũng thấy rằng mysql_connect mất khoảng 1 giây để tạo kết nối. Sau một chút googling tôi tìm thấy một giải thích rằng php đã có vấn đề với IPv6 và bạn có thể khắc phục vấn đề bằng cách vô hiệu hóa IPv6 hoặc chuyển sang ipaddress 127.0.0.1 khi thực hiện kết nối của bạn.
Tôi tự hỏi vấn đề của IPv6 trên PHP là gì, chỉ muốn hiểu rõ hơn về vấn đề này. Cảm ơn.
là mysql server của bạn chạy trên :: 1? Nếu không php có thể sẽ cố gắng kết nối thông qua ipv6 và nếu không thành công nó sẽ rơi trở lại ipv4. Điều đó sẽ yêu cầu lâu hơn một chút. – konqi
Xin lỗi vì điều đó tôi không hiểu "Máy chủ mysql của bạn đang chạy trên :: 1?" có nghĩa? Nó có nghĩa là chạy một số máy chủ mysql trên cùng một máy? –
Cảm ơn câu hỏi này. Tôi chỉ cần tăng tốc trang web của tôi rất nhiều bằng cách sử dụng 127.0.0.1 thay vì localhost. –