2013-03-19 21 views
11

Ich (hoffe) das ist eine sehr einfache Frage darüber, was für PHP/MySQL verpasst wird. Erstens, die Computer sind Windows 7 Maschinen und laufen XAMPP (Apache, PHP, MySQL, etc.) - nichts Windows/IIS, etc.PHP langsam mit mysqli

Die Maschinen sind schnell, mit PHP & MySQL läuft super schnell. Es gibt jedoch einen Rechner, auf dem die Art und Weise, wie es mit PHP arbeitet, eine Art Verzögerung ist - speziell im Wesentlichen 3 Sekunden. In der Tat, wenn Sie den Code entfernen tut alles, damit es tut nichts mehr als den Aufbau der Verbindung wie folgt aus:

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

... und es gibt keine Abfrage oder nichts - nur diese PHP-Linie, die Sets das Objekt hoch, es dauert genau 3 Sekunden.

Sie kommentieren diese Zeile im Gegensatz, und die Seite ist sofort.

Wie auch immer, warum passiert das? Es sieht nicht so aus, als wäre alles falsch, genau, nur irgendwie eingerichtet in diesen 3 Sekunden, die wir gerne loswerden würden. Vielen Dank!

+2

Ist der MySQL-Server auf dem gleichen Host wie die Maschine? –

+0

verwenden Sie localhost oder die öffentliche Netzwerk-IP-Adresse des Computers, um mysql zu verbinden? – Sebas

+0

Verbindet es? –

Antwort

9

Wenn diese lokal gehostet wird und Sie verwenden localhost dies Ihr Problem sein, versuchen

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

Verwendung Dies liegt daran, wie MYSQLI Griffe localhost und 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

Natürlich haben Sie einen * Grund * was erklärt, warum PDO schneller verbinden wird? –

+0

PDO-Unterstützung Vorbereitete Anweisungen (Clientseite) mysqli nicht – jake

+0

Der Hauptvorteil von PDO gegenüber MySQLi liegt in der Unterstützung von Datenbanktreibern. Zum Zeitpunkt dieses Schreibens unterstützt PDO 12 verschiedene Treiber, im Gegensatz zu MySQLi, das nur MySQL unterstützt. – jake