2013-03-19 34 views
11

Tôi (hy vọng) đây là một câu hỏi rất đơn giản về những gì đang bị bỏ lỡ cho PHP/MySQL. Đầu tiên, các máy tính là các máy Windows 7 và đang chạy XAMPP (Apache, PHP, MySQL, v.v.) - không có gì Windows/IIS, v.v.PHP chậm với mysqli

Máy nhanh chóng, với PHP & MySQL chạy siêu nhanh. Tuy nhiên, có một máy mà cách nó hoạt động với PHP & MySQL là một số loại chậm trễ - cụ thể, về cơ bản là 3 giây. Trong thực tế, nếu bạn loại bỏ tất cả những gì đang làm như vậy mà nó đang làm gì hơn là thiết lập kết nối của nó như thế này:

$db = new mysqli($hostname, $username, $password, $database); 

... và không có thắc mắc hoặc bất cứ điều gì - chỉ cần dòng PHP này mà bộ lên đối tượng, phải mất chính xác 3 giây.

Bạn nhận xét dòng này, ngược lại và trang là ngay lập tức.

Dù sao thì tại sao điều này lại xảy ra? Nó không giống như bất cứ điều gì là sai, chính xác, chỉ bằng cách nào đó thiết lập trên 3 giây này mà chúng tôi muốn thoát khỏi. Cảm ơn!

+2

Máy chủ mysql có cùng máy chủ với máy không? –

+0

bạn đang sử dụng localhost hoặc mạng IP công cộng của máy tính để kết nối mysql? – Sebas

+0

Nó có kết nối không? –

Trả lời

9

Nếu đây được lưu trữ tại địa phương và bạn đang sử dụng localhost đây sẽ là vấn đề của bạn, hãy thử sử dụng

$db = new mysqli('127.0.0.1', $username, $password, $database); 

Điều này là do cách xử lý MYSQLI localhost và IPV6.

-2
$orig = $_GET['orig']; 
$des_id = $_GET['des_id']; 
try { 
    $dbuser = "kim"; 
    $dbpass = "kim"; 
    $conn = new PDO('mysql:host=localhost;dbname=destination', $dbuser, $dbpass); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  
    $stmt = $conn->prepare("SELECT pl_id FROM view_places WHERE name = :name LIMIT 1"); 

    $stmt->bindParam(':name',$orig); 
    $stmt->execute(); 
    $result_1 = $stmt -> fetch(); 
    $res1 = $result_1["pl_id"]; 

    $stmt->bindParam(':name', $des_id); 
    $stmt->execute(); 
    $result_2 = $stmt -> fetch(); 
     $res2 = $result_2["pl_id"]; 
     echo 'origin_number:'.$res1. ', '.'destination_id:'.$res2; 
    } catch(PDOException $e) { 
      echo 'ERROR: ' . $e->getMessage(); 
    } 
+0

Tất nhiên bạn có lý do * giải thích tại sao PDO sẽ kết nối nhanh hơn? –

+0

Hỗ trợ PDO Câu lệnh được chuẩn bị (phía máy khách) mysqli không – jake

+0

Lợi thế cốt lõi của PDO trên MySQLi là hỗ trợ trình điều khiển cơ sở dữ liệu của nó. Tại thời điểm viết bài này, PDO hỗ trợ 12 trình điều khiển khác nhau, trái ngược với MySQLi, chỉ hỗ trợ MySQL. – jake

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