2013-03-19 61 views
11

我(希望)這是一個非常簡單的問題,關於什麼是錯過的PHP/MySQL。首先,計算機是Windows 7機器,運行XAMPP(Apache,PHP,MySQL等) - 沒有Windows/IIS等。PHP緩慢與mysqli

這臺機器很快,MySQLMySQL運行速度超快。然而,有一臺機器的工作方式與PHP & MySQL是某種延遲 - 具體來說,它本質上是3秒。事實上,如果你移除所有的代碼就是這麼做的,它是做什麼比建立它的連接這樣更多:

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

...並沒有查詢或任何東西 - 只是這個PHP線,設置這個對象,它需要3秒。

相比之下,您註釋掉了這一行,並且該頁面是即時的。

無論如何想法爲什麼會發生這種情況?它看起來並不是什麼錯誤,只是以某種方式設置在這3秒內,我們想擺脫。謝謝!

+2

mysql服務器與機器在同一主機上嗎? – 2013-03-19 22:39:52

+0

你使用本地主機還是計算機的網絡公有IP來連接mysql? – Sebas 2013-03-19 22:40:12

+0

它連接嗎? – 2013-03-19 22:43:56

回答

9

如果這是本地託管和你正在使用本地主機,這將是你的問題,請嘗試使用

$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將更快地連接? – 2013-08-07 12:45:24

+0

PDO支持編寫語句(客戶端)mysqli不是 – jake 2013-08-07 12:50:26

+0

PDO比MySQLi的核心優勢在於其數據庫驅動程序支持。在撰寫本文時,PDO支持12種不同的驅動程序,而MySQLi僅支持MySQL。 – jake 2013-08-07 12:51:54