2013-03-19 4 views
11

I (spero) questa è una domanda molto semplice su ciò che viene perso per PHP/MySQL. In primo luogo, i computer sono macchine Windows 7 e sono in esecuzione XAMPP (Apache, PHP, MySQL, ecc.) - niente Windows/IIS, ecc.PHP lento con mysqli

Le macchine sono veloci, con PHP & MySQL in esecuzione super veloce. Tuttavia, c'è una macchina in cui il modo in cui funziona con PHP & MySQL è una sorta di ritardo - in particolare, è essenzialmente 3 secondi. In realtà, se si rimuove tutto ciò che il codice sta facendo in modo che non sta facendo niente di più che la creazione di sua connessione in questo modo:

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

... e non v'è alcuna domanda o niente - proprio questa linea di PHP che imposta fino all'oggetto, ci vogliono esattamente 3 secondi.

Si commenta questa riga, al contrario, e la pagina è istantanea.

In ogni caso, perché questo sta accadendo? Non sembra che ci sia qualcosa che non va, esattamente, solo in qualche modo su questi 3 secondi di cui vorremmo sbarazzarci. Grazie!

+2

Il server mysql è sullo stesso host della macchina? –

+0

stai usando localhost o l'IP pubblico di rete del computer per connettere mysql? – Sebas

+0

Si connette? –

risposta

9

Se questa è ospitato localmente e si utilizza localhost questo sarà il vostro problema, provare a utilizzare

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

Questo è a causa di come MYSQLI gestisce localhost e 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

Ovviamente si dispone di un * motivo * che spiega perché PDO si connetterà più velocemente? –

+0

Supporto PDO Istruzioni preparate (lato client) mysqli non – jake

+0

Il vantaggio principale di PDO su MySQLi è nel supporto del driver del database. Al momento della stesura di questo articolo, PDO supporta 12 driver diversi, opposti a MySQLi, che supporta solo MySQL. – jake