2013-03-19 13 views
11

Mam nadzieję, że jest to bardzo proste pytanie o to, czego brakuje PHP/MySQL. Po pierwsze, komputery to Windows 7 i działają na XAMPP (Apache, PHP, MySQL, itd.) - nic Windows/IIS itp.PHP powolne z mysqli

Maszyny są szybkie, z PHP & MySQL działa superszybko. Istnieje jednak jedna maszyna, w której sposób działania z PHP & MySQL to jakieś opóźnienie - konkretnie, to zasadniczo 3 sekundy. W rzeczywistości, jeśli usunąć wszystko kod robi tak, że nie robi nic więcej niż konfigurowania swojego połączenia tak:

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

... i nie ma zapytania lub cokolwiek - tylko ten, który wyznacza linia PHP do obiektu, zajmuje dokładnie 3 sekundy.

Skomentowałeś tę linię, a strona jest natychmiastowa.

W każdym razie pomysł, dlaczego tak się dzieje? Nie wygląda na to, że coś jest nie tak, dokładnie, po prostu jakoś skonfigurowane na te 3 sekundy, które chcielibyśmy się pozbyć. Dzięki!

+2

Czy serwer mysql znajduje się na tym samym hoście, co urządzenie? –

+0

używasz localhost lub publicznego adresu IP komputera do połączenia mysql? – Sebas

+0

Czy to się łączy? –

Odpowiedz

9

Jeśli jest obsługiwana lokalnie i używasz localhost to będzie problem, spróbuj użyć

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

To dlatego, jak MYSQLI obsługuje localhost i 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

Oczywiście masz * powód *, który wyjaśnia, dlaczego PDO będzie łączyć się szybciej? –

+0

Obsługa PDO Przygotowane instrukcje (strona klienta) mysqli nie jest – jake

+0

Podstawową zaletą PDO w stosunku do MySQLi jest obsługa sterownika bazy danych. W chwili pisania tego dokumentu PDO obsługuje 12 różnych sterowników, w przeciwieństwie do MySQLi, który obsługuje tylko MySQL. – jake