Php+mysql की विकास प्रक्रिया के दौरान, डेटाबेस से कनेक्ट करने के लिए होस्ट नाम भरते समय, स्थानीय मशीन आम तौर पर लोकलहोस्ट या 127.0.0.1 का उपयोग कर सकती है, वास्तविक एप्लिकेशन प्रक्रिया में, लिनक्स सिस्टम में कोई असामान्यता नहीं पाई गई है विंडोज़ सर्वर सिस्टम में, लोकलहोस्ट लिखते समय, वेब पेज प्रतिक्रिया अपेक्षाकृत धीमी होगी। आम तौर पर, एक पेज को पूरा करने में 1 सेकंड से अधिक समय लगता है। मैंने चरण दर चरण प्रोग्राम के चलने के समय का आकलन किया और पाया कि यह एक समस्या थी MySQL से कनेक्ट करते समय, कनेक्शन स्थापित करने में लगभग 1 सेकंड का समय लगता है। यदि कोई समस्या है, तो उसे खोजें और पता लगाएं कि यह स्थिति मौजूद है। अंश इस प्रकार है:

HTTP://blog.Sina.com.ability/是/blog_6cost 5ah 76 बाल 0100 एक पेंटिंग.HTML

हाल ही में मैंने पाया कि प्रोग्राम का प्रतिक्रिया समय थोड़ा धीमा था, इसलिए मैंने इसे धीरे-धीरे समाप्त कर दिया और प्रत्येक प्रोग्राम के निष्पादन समय की गणना की, अंत में, मैंने पाया कि डेटाबेस से लिंक करने का कोई अच्छा तरीका नहीं था डेटाबेस, इसलिए मैंने इसे नीचे रख दिया।

अगले दिन, मैंने डेटाबेस के रिमोट लिंक का परीक्षण किया और पाया कि डेटाबेस तक पहुंचने के लिए आईपी का उपयोग करने का निष्पादन समय बहुत कम था और जब मैंने स्थानीय रूप से डेटाबेस से कनेक्ट करने के लिए लोकलहोस्ट का उपयोग किया था, तब की तुलना में यह बहुत कम था। तो हमारे पास निम्नलिखित परीक्षण है:

set_time_limit(0) ;
$localtime = 0 ;
for($i=1;$i<=50;$i++){
 $btime = get_microtime() ;   
 $conn = new mysqli("localhost","root","admin","") ;
 $conn-close() ;
 $etime = get_microtime() ;
 $localtime += $etime-$btime ;
}
$iptime =0 ;
for($i=1;$i<=50;$i++){
 $btime = get_microtime() ;   
 $conn = new mysqli("127.0.0.1","root","admin","") ;
 $conn-close() ;
 $etime = get_microtime() ;
 $iptime += $etime-$btime ;
}
echo "localhost时间损耗为:".($localtime)/$i."<br /" ;
echo "127.0.0.1时间损耗为:".($iptime/$i)."<br /" ;
function get_microtime(){
 list($micro,$time) = explode(" ",microtime());
 return $time+$micro ;
}


आउटपुट परिणाम है: लोकलहोस्ट समय हानि है: 0.98833055122226

127.0.0.1 का समय हानि है: 0.0039590807522044

 

दोनों कनेक्शन विधियों की समय खपत बहुत अलग है, यह बहुत अच्छा होगा यदि ऐसे विशेषज्ञ हों जो इस प्रश्न का उत्तर देने में मदद कर सकें।

मैंने अनुमान लगाया कि यह DNS रिज़ॉल्यूशन के कारण हो सकता है, या लोकलहोस्ट रिज़ॉल्यूशन में समय लगता है। कृपया समझाएं कि मैं एक विंडो सिस्टम का उपयोग कर रहा हूं।

कारण स्पष्टीकरण:

यह वास्तव में ऑपरेटिंग सिस्टम पार्सिंग की समस्या है। विवरण के लिए कृपया http://www.cnblogs.com/hayywcy/p/5341550.html देखें।

मुझे आज एक अजीब समस्या का सामना करना पड़ा। लोकलहोस्ट तक पहुंचने पर, यह संकेत मिला कि 404 नहीं मिला, लेकिन 127.0.0.1 पहुंच योग्य था। अंत में, कारण पाया गया क्योंकि विंडोज़ ने लोकलहोस्ट को 127.0.0.1 के बजाय आईपीवी6 एड्रेस::1 पर हल किया। मैंने होस्ट की जाँच की और पाया कि आईपीवी6 को अवरुद्ध कर दिया गया है, 127.0.0.1 लोकलहोस्ट भी है, लेकिन इसे सामान्य रूप से पार्स नहीं किया जा सकता है। Baidu ने लंबे समय तक खोज की लेकिन कोई फायदा नहीं हुआ, और अंततः वैज्ञानिक इंटरनेट तरीकों का उपयोग करके Google पर एक समाधान ढूंढ लिया, मूल पोस्ट को खोने से बचाने के लिए, मैंने इसे यहां दोबारा पोस्ट किया (मूल पोस्ट पता: http://superuser.com/questions/)। 436574/आईपीवी4-बनाम-आईपीवी6-विंडोज़ में प्राथमिकता-7/436944#436944)।

लेख सामग्री:

समाधान #1: आईपीवी4 पतों को आईपीवी6 की तुलना में प्राथमिकता देने के लिए एक उपसर्ग नीति जोड़ें उपसर्ग नीति तालिका एक रूटिंग तालिका के समान है, यह निर्धारित करती है कि कनेक्शन बनाते समय कौन से आईपी पते को प्राथमिकता दी जाती है। ध्यान दें कि उपसर्ग नीतियों में उच्च प्राथमिकता को एक लेगर "प्राथमिकता" द्वारा दर्शाया जाता है। मान, राउटिंग टेबल "लागत" मान के बिल्कुल विपरीत।

डिफ़ॉल्ट Windows उपसर्ग नीति तालिका:

C:\netsh इंटरफ़ेस ipv6 उपसर्ग नीतियाँ दिखाता है सक्रिय स्थिति को क्वेरी कर रहा है...

 प्राथमिकता  लेबल  उपसर्ग

 ----------  -----  ---------------------------------- ---

 50      0  ::1/128

 40      1  ::/0

 30      2  2002::/16

 20      3  ::/96

 10      4  ::ffff:0:0/96

  5      5  2001::/32 ध्यान दें कि आईपीवी6 पते (::/0) को आईपीवी4 पते (::/96, ::ffff:0:0/96) की तुलना में प्राथमिकता दी जाती है। .

 

हम एक ऐसी नीति बना सकते हैं जो हरिकेन इलेक्ट्रिक आईपीवी6 सुरंग को किसी भी आईपीवी4 पते से कम अनुकूल बनाएगी:

नेटश इंटरफ़ेस आईपीवी6 ऐड प्रीफ़िक्सपॉलिसी 2001:470::/32 3 6 2001:470::/32 हरिकेन इलेक्ट्रिक का उपसर्ग है, 3 एक प्राथमिकता (बहुत कम) है और 6 एक लेबल है।

मैं अधिक सामान्य उपसर्ग का उपयोग कर सकता था, लेकिन मैं यह सुनिश्चित करना चाहता था कि जब भी मुझे ISP से सीधी IPv6 कनेक्टिविटी मिलेगी, तो इसे IPv4 पर प्राथमिकता दी जाएगी।

यदि आप इस समाधान को अपनाते हैं, तो आपको मेरे हरिकेन इलेक्ट्रिक के स्थान पर एक उपयुक्त IPv6 उपसर्ग लगाना होगा।

समाधान #2: विंडोज़ को हमेशा आईपीवी6 की तुलना में आईपीवी4 को प्राथमिकता देने के लिए रजिस्ट्री में बदलाव करें

यह समाधान अधिक सामान्य है, लेकिन अधिक आक्रामक और कम मानकों के अनुरूप है। अंत में, विंडोज़ अभी भी आपके लिए उपसर्ग नीति तालिका को संशोधित करेगा।

RegEdit खोलें, HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters पर नेविगेट करें DisabledComponents DWORD रजिस्ट्री मान बनाएं, इसका मान 20 (हेक्साडेसिमल) पर सेट करें।

इस रजिस्ट्री कुंजी के बारे में अधिक जानकारी के लिए Microsoft KB 929852 देखें, खासकर यदि DisabledComponents आपके सिस्टम पर पहले से मौजूद है।

अनुवाद के अनुसार, विंडोज़ में प्राथमिकता पार्सिंग सूची होती है जब आईपीवी 6 की प्राथमिकता आईपीवी 4 से अधिक होती है, तो जिस स्थिति का मैंने आज सामना किया वह घटित होगी (हालाँकि इसका कारण अभी भी नहीं मिला है)। पहला तरीका प्राथमिकता पार्सिंग तालिका में आईपीवी 6 से अधिक आईपीवी 4 की प्राथमिकता वाला रिकॉर्ड जोड़ना है, क्योंकि कई शब्दों को समझा नहीं जा सकता है, और मुझे पैरामीटर गलत होने का डर है, इसलिए मैं इसका उपयोग करने की हिम्मत नहीं करता। मैंने इसे दूसरी विधि से हल किया, जो कि रजिस्ट्री को संशोधित करना है। विधि इस प्रकार है (यदि आप अंग्रेजी नहीं समझते हैं, तो आपको इसे जांचने की आवश्यकता नहीं है):

रजिस्ट्री खोलें, कुंजी HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters ढूंढें, और DisabledComponents नाम के साथ DWORD प्रकार का एक आइटम जोड़ें (यदि पहले से ही एक है, तो आपको इसे जोड़ने और सीधे मान बदलने की आवश्यकता नहीं है) ). फिर मान को 20 और मान प्रकार को हेक्साडेसिमल में संशोधित करें। बस इतना ही, रजिस्ट्री को सहेजें और कंप्यूटर को पुनरारंभ करें। लोकलहोस्ट को दोबारा पिंग करके देखें।


उत्तर छोड़ दें