2012-11-27 21 views
12

(重要)EDIT 3: testajax2.phpを単独で実行し、AJAXでは実行しません。期間はほぼ同じで、1.02-1.03秒です。だから私は、問題はPHP-MYSQLまたはXAMPPにあることを意味すると思います?? phpmyadminクエリを実行すると、結果は次のようになります。0〜29行目を表示(〜50件、クエリでは0.0015秒)結局のところAjaxではなく、おそらくPHPで問題が発生しているようだ。ヘルプが...(私もちょうど質問のタイトルを編集した。)してくださいMySQLのPHPが遅い

回答:”C:\Windows\System32\drivers\etc”

127.0.0.1 localhost 



質問の前にあるhostsファイルに次の行を追加します。 : もう一方のSQLクエリを使用したJquery Ajaxの場合、通常は の最小持続時間は1秒です?試しました $.get$.post$.getjson$.ajax({type:'POST'})$.ajax({type:'GET'})です。私が言ったように、それは最小です、それはさらに約3秒に悪化する可能性があります。私はphpMyAdminでそれらを試したときと同じように、SQLクエリーだとは思えませんが、結果は非常に速くなります。

クエリが非常に単純でテーブルが2つの要素しか持たない場合でも、それは1秒の最小値に従います。私は最新のXAMPPを使用していますが、重要かどうかわかりませんが、localhostと127.0.0.1でファイルにアクセスしています。ありがとう!

編集:返信いただきありがとうございます。私は地元の環境でこれを実行しています。同じノートパソコンでこれらのファイルを作成しました。 Jqueryが更新されました。戻り値/配列はjson_encodedです。私はmysqliを使用しています。データベースはInnoDBにあり、内部は約5つのテーブルしかなく、ほとんど何もありません。ここでは、非常に単純なサンプルクエリです:

のindex.php

var test_id =2; 
    testcall(); 
    function testcall(){ 
     $.ajax({ 
      url: 'testajax2.php', 
      type: 'POST', 
      data: {test_id: test_id}, 
      success: function(data){ 

      }  
     }); 
    } 

testajax2.php

$mysqli = new mysqli('localhost', 'root', '', 'testdb'); 
    $mysqli->set_charset("utf8"); 
    if(mysqli_connect_errno()) { 
     echo "Connection Failed: " . mysqli_connect_errno(); 
     exit(); 
    } 

    $testreceive = $_POST['test_id']; 
    $query = "SELECT First_Name from tblperson"; 
    $result = $mysqli->query($query); 
    $row = $result->fetch_all(MYSQLI_ASSOC); 

    echo json_encode($row); 

tblpersonは50件のレコードが含まれ、かつ唯一の4列があります。 Firebugによれば、その非常に単純な作業を行うのに1.03秒かかりました。私はそれが本当に何を意味するかわからないが、FirebugのNetタブを見ると、バーは完全に紫色である。 0と1.03秒待機します。 + 1.03秒と0受信。

編集2:json_encode($row)またはforeach($row as $value){ echo $value['First_Name']; }として送信しても問題ありません。依然として少なくとも約1秒である。私はChromeとSafariで試してみましたが、正確な所要時間はありませんが、ほぼ同じであることがわかります。しかし、NO SQL QUERIESを使った簡単なAJAX呼び出し。私が正しく覚えていれば、それはとても速いです。私は、サンプルと継続時間の出力で戻ってくるだろう。

+1

私たちはもっと情報を必要とします、あなたの文脈はあまりにも曖昧です。私たちはそれを試すことができるリンクを持っていますか?どのくらいのAjaxコールを同時に持っていますか?あなたの環境はローカルかリモートですか? .... –

+0

関連するコードを表示できますか? –

+0

me/myの設定ではこれは普通ではありません..ローカルでは、私のajaxリクエスト(平均して、firebugによる)は140ms以内に完了します。しかし、他のコメントによれば、あなたのマシンで何が起きているか、スクリプトの複雑さはわかりません。 – Dale

答えて

16

回答:”C:\Windows\System32\drivers\etc”

127.0.0.1 localhost 

にあるhostsファイルに次の行を追加します。これは私の問題を解決しました。 PHP-MySQLは、20〜500msの間の複雑さに応じてタスクを完了できます。

+0

リンクが壊れていますが、答えが私を助けました!私のテストは、実行に約56秒かかりました。今、2未満! –

+1

私のホストファイルの最後に10レコード以上ある行があり、2秒遅れました。私は行を先頭に移動しなければなりませんでした。遅れはありません。 – Dan

+0

ありがとうございました!これはまさに私の問題でした! – newms87

12

これは、1)クエリ自体、または2)mysqliインスタンスの作成(および結果のdb接続)の2つの場所で発生している可能性があります。私が推測しなければならないのであれば、あなたの問題は(2)と考えられます。

クイックダーティーなデバッグ方法の1つは、microtime()です。

http://www.php.net/manual/en/function.microtime.php

例:

$start = microtime(TRUE); // Start counting 

$mysqli = new mysqli('localhost', 'root', '', 'testdb'); 

$temp = microtime(TRUE) - $start; 
echo "Time to connect: {$temp}"; // Check elapsed time 

$mysqli->set_charset("utf8"); 
if(mysqli_connect_errno()) { 
    echo "Connection Failed: " . mysqli_connect_errno(); 
    exit(); 
} 

$temp = microtime(TRUE) - $start; 
echo "Time to setup: {$temp}"; // Check elapsed time 

$testreceive = $_POST['test_id']; 
$query = "SELECT First_Name from tblperson"; 
$result = $mysqli->query($query); 

$temp = microtime(TRUE) - $start; 
echo "Time to query: {$temp}"; // Check elapsed time 

$row = $result->fetch_all(MYSQLI_ASSOC); 

$temp = microtime(TRUE) - $start; 
echo "Time to fetch {$temp}"; // Check elapsed time 
+0

それは解決されました。しかし、あなたの先端は次回に便利になるかもしれません。 Plsはそれを削除しません。ありがとう。私は15の代理人に達したらそれをupvoteよ – Wap

+0

あなたのコードをありがとうが、内部にエラーがあります。行14では、$ startの代わりに$ tempを使用します。 – bernhardh

0

問題が127.0.0.1にlocalhostをローカルホストからの検索です。

ソリューションは@Wapが答えているようにhostsファイルをあなたの窓にライン127.0.0.1 localhostを追加することのいずれかである(そして、あなたが答えてくれてありがとう!)

それとも、hostsファイルへのアクセス権を持っていない場合は、次のことができます単にあなたのPHP mysqliの呼び出しでlocalhostを127.0.0.1に変更してください: $mysqli = new mysqli('127.0.0.1'), 'root', '', 'testdb');