2013-03-19 2 views
11

PHP (PHP)/MySQL에 대해 놓친 내용에 대한 매우 간단한 질문입니다. 첫째, 컴퓨터는 Windows 7 머신이며 XAMPP (Apache, PHP, MySQL 등)을 실행하고 있습니다. Windows/IIS 등은 없습니다.mysqli로 PHP가 느려졌습니다

기계는 PHP &과 함께 빠르며 빠릅니다. 그러나 PHP가 작동하는 곳은 하나의 머신이 있습니다 & MySQL은 일종의 지연입니다. 구체적으로는 기본적으로 3 초입니다. 사실, 당신은 코드가 이런 식으로의 연결 설정에 불과하고 있지 않은지 그렇게 모든 것을 제거하는 경우 : - 그냥이 PHP 라인 설정

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

을 ... 그리고 어떤 쿼리 또는 아무것도가 없다 물체를 올리려면 정확히 3 초가 걸립니다.

이와 대조적으로이 줄을 주석 처리하면 페이지가 즉시 나타납니다.

어째서 이런 일이 발생했는지 생각해보십시오. 아무것도 잘못된 것처럼 보이지 않습니다. 정확히 3 초에 우리가 없애고 싶은데요. 감사!

+2

머신과 동일한 호스트에있는 mysql 서버입니까? –

+0

localhost 또는 컴퓨터의 네트워크 공용 IP를 사용하여 mysql을 연결하고 있습니까? – Sebas

+0

연결 되나요? –

답변

9

이 로컬 호스팅하고 localhost를이 방법으로 문제가 될 것입니다 사용하는 경우,

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

이 때문에 MYSQLI가 로컬 호스트와 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

물론 PDO가 더 빠르게 연결되는 이유를 설명하는 * 이유가 있습니까? –

+0

PDO 지원 Prepared statements (클라이언트 측) mysqli는 – jake

+0

이 아닙니다. MySQLi에 비해 PDO의 핵심 이점은 데이터베이스 드라이버 지원입니다. 이 글을 쓰는 시점에서, PDO는 MySQL을 지원하는 MySQLi에 반대되는 12 가지 드라이버를 지원합니다. – jake