2012-11-27 13 views
12

(महत्वपूर्ण) संपादित करें 3: testajax2.php को स्वयं चलाकर और AJAX नहीं चला रहा है। अवधि लगभग उसी के बारे में है, 1.02-1.03 एस। तो मुझे लगता है कि इसका मतलब है कि समस्या PHP-MYSQL या XAMPP में है ?? जब phpmyadmin क्वेरी के माध्यम से भाग गया, तो परिणाम यहां दिया गया है: पंक्तियों को दिखा रहा है 0 - 2 9 (~ 50 कुल, क्वेरी 0.0015 सेकंड)। ऐसा लगता है कि समस्या अजाक्स में नहीं है, लेकिन शायद PHP में। मदद कृपया ... (मैं भी सिर्फ सवाल शीर्षक संपादित किया है।)MySQL के साथ PHP धीमा

उत्तर: मेजबान ”C:\Windows\System32\drivers\etc”

127.0.0.1 localhost 



सवाल से पहले में स्थित फ़ाइल निम्नलिखित पंक्ति जोड़ दें : क्या Jquery Ajax के लिए दूसरी तरफ एसक्यूएल प्रश्नों के साथ सामान्य है न्यूनतम अवधि 1 सेकंड है? मैंने $.get, $.post, $.getjson, $.ajax({type:'POST'}), $.ajax({type:'GET'}) की कोशिश की है। जैसा कि मैंने कहा है, यह न्यूनतम है, यह लगभग 3 सेकंड तक भी बदतर हो सकता है। मुझे संदेह है कि यह एसक्यूएल प्रश्न है, हालांकि जब मैं उन्हें phpmyadmin में आज़माता हूं, तो परिणाम बहुत तेजी से आते हैं।

इससे कोई फर्क नहीं पड़ता कि प्रश्न बहुत सरल हैं और तालिका में केवल 2 तत्व हैं, यह अभी भी 1 सेकंड न्यूनतम का पालन करेगा। मैं नवीनतम XAMPP का उपयोग कर रहा हूं, और मुझे नहीं पता कि यह महत्वपूर्ण है, लेकिन मैं स्थानीयहोस्ट और 127.0.0.1 के माध्यम से फ़ाइलों तक पहुंच रहा हूं। धन्यवाद!

संपादित करें: उत्तर के लिए धन्यवाद, दोस्तों। मैं इसे एक स्थानीय वातावरण पर चला रहा हूं, उसी लैपटॉप पर मैंने इन फ़ाइलों को बनाया है। Jquery अद्यतन किया गया है। लौटाया गया मूल्य/सरणी json_encoded है। मैं mysqli का उपयोग कर रहा हूँ। डेटाबेस इनो डीबी में है, और भीतर केवल 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 स्तंभ हैं। फायरबग के मुताबिक, यह बेहद सरल काम करने के लिए 1.03 ले गया। मुझे यकीन नहीं है कि इसका वास्तव में क्या अर्थ है, लेकिन फायरबग में नेट टैब के माध्यम से देखकर, बार पूरी तरह बैंगनी है। 0 और 1.03 प्रतीक्षा कर रहा है। + 1.03 और 0 प्राप्त करना।

संपादित 2: इससे कोई फर्क नहीं पड़ता कि मैं उन्हें json_encode($row) या foreach($row as $value){ echo $value['First_Name']; } के रूप में भेजता हूं। यह अभी भी कम से कम 1 सेकंड के बारे में होगा। मैंने क्रोम और सफारी पर कोशिश की है, और हालांकि मेरे पास सही अवधि नहीं है, मैं कह सकता हूं कि यह वही है। लेकिन कोई एसक्यूएल क्वेरी के साथ सरल AJAX कॉल के लिए। अगर मुझे सही याद है, तो यह बहुत तेज़ है। मैं एक नमूना और अवधि उत्पादन के साथ वापस आऊंगा।

+1

हमें अधिक जानकारी की आवश्यकता है, आपका संदर्भ बहुत अस्पष्ट है। क्या आपके पास एक लिंक है जहां हम इसे आजमा सकते हैं? आपके पास एक साथ कितने AJAX कॉल हैं? क्या आपका पर्यावरण स्थानीय या दूरस्थ है? .... –

+0

क्या आप प्रासंगिक कोड दिखा सकते हैं? –

+0

मेरे लिए/मेरा सेटअप यह सामान्य नहीं है .. स्थानीय रूप से मेरे AJAX अनुरोध (औसतन, फायरबग के अनुसार) 140ms के भीतर पूरा हो जाते हैं। लेकिन जैसा कि दूसरी टिप्पणी कहती है .. हमें नहीं पता कि आपकी मशीन पर क्या हो रहा है, स्क्रिप्ट कितनी जटिल हैं। – Dale

उत्तर

16

उत्तर: में ”C:\Windows\System32\drivers\etc”

127.0.0.1 localhost 

यह मेरी समस्या हल मेजबान स्थित फ़ाइल निम्नलिखित पंक्ति जोड़ दें। PHP-MySQL अब 20-500ms के बीच कहीं भी जटिल के आधार पर अपना कार्य पूरा कर सकता है।

+0

लिंक टूटा हुआ है, लेकिन जवाब ने मुझे बचाया! मेरे परीक्षण चलाने के लिए ~ 56 सेकंड ले रहे थे। अब, 2 से कम !! –

+1

मेरे पास 10+ रिकॉर्ड्स के साथ मेरी मेजबान फ़ाइल के नीचे उस पंक्ति थी और मुझे 2 सेकंड की देरी हुई थी, मुझे लाइन को शीर्ष पर ले जाना पड़ा और अब कोई देरी नहीं है – Dan

+0

धन्यवाद! यह वास्तव में मेरी समस्या थी! – newms87

12

यह कुछ स्थानों में हो रहा है: 1) क्वेरी स्वयं, या 2) mysqli उदाहरण (और परिणामस्वरूप डीबी कनेक्शन) का निर्माण। अगर मुझे लगता है, मुझे संदेह है कि आपकी समस्या है (2)।

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 प्रतिनिधि – Wap

+0

तक पहुंचता हूं तो मैं इसे ऊपर उठाऊंगा, आपके कोड के लिए धन्यवाद, लेकिन अंदर एक त्रुटि है। पंक्ति 14 में आप $ शुरू करने के बजाय $ temp का उपयोग करें! – bernhardh

0

समस्या 127.0.0.1 करने के लिए स्थानीय होस्ट से स्थानीय होस्ट देखने है।

समाधान या तो अपने विंडोज़ मेजबान @Wap के रूप में दाखिल जवाब है करने के लिए लाइन 127.0.0.1 localhost जोड़ने के लिए

है (और धन्यवाद आप जवाब के लिए!) या आप के लिए मेजबान फ़ाइल पहुँच नहीं है, तो आप कर सकते हैं बस अपने php mysqli कॉल में localhost को 127.0.0.1 में बदलें: $mysqli = new mysqli('127.0.0.1'), 'root', '', 'testdb');