Durante il processo di sviluppo di php+mysql, quando si inserisce il nome host per la connessione al database, la macchina locale può generalmente utilizzare localhost o 127.0.0.1. Nel processo di applicazione vero e proprio non sono state riscontrate anomalie nel sistema Linux, ma nel sistema server Windows, ci sono Quando si scrive localhost, la risposta della pagina web sarà relativamente lenta In genere, è necessario più di 1 secondo per completare una pagina Ho valutato il tempo di esecuzione del programma passo dopo passo e ho scoperto che si trattava di un problema quando ci si connette a MySQL. Ci vuole quasi 1 secondo per stabilire una connessione. Deve essere Se c'è un problema, cercalo e scopri che questa situazione esiste. Molti blog di programmatori hanno risposto.

HTTP://blog.Sina.com.abilities/是/blog_6cost 5ah 76 capelli 0100 un dipinto.HTML

Recentemente ho scoperto che il tempo di risposta del programma era un po' lento, quindi l'ho eliminato gradualmente e ho calcolato il tempo di esecuzione di ciascun programma. Alla fine, ho scoperto che il tempo sprecato nel collegamento al database non esisteva un buon modo per collegarsi il database, quindi l'ho messo giù.

Il giorno successivo, ho testato il collegamento remoto al database e ho scoperto che il tempo di esecuzione dell'utilizzo dell'IP per accedere al database era molto breve e molto più breve rispetto a quando utilizzavo localhost per connettermi al database localmente. Abbiamo quindi il seguente test:

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 ;
}


Il risultato di output è: la perdita di tempo localhost è: 0,98833055122226

La perdita di tempo di 127.0.0.1 è: 0.0039590807522044

 

Il consumo di tempo dei due metodi di connessione è molto diverso. Sarebbe fantastico se ci fossero esperti che possano aiutare a rispondere a questa domanda.

Ho immaginato che potrebbe essere dovuto alla risoluzione DNS o che la risoluzione dell'host locale richiede tempo. Per favore spiega che sto usando un sistema a finestre.

Spiegazione del motivo:

Si tratta infatti di un problema di analisi del sistema operativo. Per i dettagli, fare riferimento a http://www.cnblogs.com/hayywcy/p/5341550.html.

Oggi ho riscontrato uno strano problema durante l'accesso a localhost, mi è stato chiesto di non trovare 404, ma 127.0.0.1 era accessibile. Alla fine, è stato trovato il motivo perché Windows ha risolto localhost nell'indirizzo ipv6::1 anziché 127.0.0.1. Ho controllato gli host e ho scoperto che IPv6 è stato bloccato. Esiste anche 127.0.0.1 localhost, ma non può essere analizzato normalmente. Baidu ha cercato a lungo senza risultati e alla fine ha trovato una soluzione su Google utilizzando metodi scientifici su Internet. Per evitare che il post originale andasse perso, l'ho ripubblicato qui (indirizzo del post originale: http://superuser.com/questions/). 436574/ipv4-vs-ipv6-priority-in-windows-7/436944#436944).

Contenuto dell'articolo:

SOLUZIONE N. 1: AGGIUNGI UNA POLICY DEL PREFISSO PER PREFERIRE GLI INDIRIZZI IPV4 SU IPV6 La tabella delle policy dei prefissi è simile a una tabella di routing, determina quali indirizzi IP sono preferiti quando si effettua una connessione. Nota che la precedenza più elevata nelle policy dei prefissi è rappresentata da una "precedenza" lager. valore, esattamente opposto al valore "costo" della tabella di routing.

Tabella dei criteri di prefisso Windows predefinita:

C:\netsh interfaccia ipv6 mostra prefixpolicies Interrogazione sullo stato attivo...

 Precedenza  Etichetta  Prefisso

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

 50      0  ::1/128

 40      1  ::/0

 30      2  2002::/16

 20      3  ::/96

 10      4  ::ffff:0:0/96

  5      5  2001::/32 Notare che gli indirizzi IPv6 (::/0) sono preferiti rispetto agli indirizzi IPv4 (::/96, ::ffff:0:0/96) .

 

Possiamo creare una politica che renderà il tunnel IPv6 di Hurricane Electric meno favorevole di qualsiasi indirizzo IPv4:

netsh Interface ipv6 add prefixpolicy 2001:470::/32 3 6 2001:470::/32 è il prefisso di Hurricane Electric, 3 è una precedenza (molto bassa) e 6 è un'etichetta.

Avrei potuto usare un prefisso più generico, ma volevo assicurarmi che se e quando otterrò una connettività IPv6 diretta da un ISP, avrà la precedenza su IPv4.

Se adatti questa soluzione, devi sostituire un prefisso IPv6 appropriato invece di quello del mio Hurricane Electric.

SOLUZIONE N. 2: MODIFICARE IL REGISTRO PER FARE IN MODO CHE WINDOWS PREFERISCA SEMPRE IPV4 RISPETTO A IPV6

Questa soluzione è più generica, ma più invasiva e meno conforme agli standard. Alla fine, Windows modificherà comunque la tabella dei criteri dei prefissi per te.

Apri RegEdit, vai a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters Crea il valore di registro DWORD DisabledComponents, imposta il suo valore su 20 (esadecimale).

Vedere Microsoft KB 929852 per ulteriori informazioni su questa chiave di registro, soprattutto se DisabledComponents è già presente nel sistema.

Secondo la traduzione, Windows ha un elenco di analisi delle priorità Quando ipv6 ha una priorità più alta di ipv4, si verificherà la situazione che ho riscontrato oggi (sebbene il motivo non sia ancora stato trovato). Il primo modo è aggiungere un record con una priorità ipv4 superiore a ipv6 alla tabella di analisi delle priorità. Poiché molte parole non possono essere comprese e ho paura di sbagliare i parametri, non oso usarlo. L'ho risolto con il secondo metodo, ovvero modificare il registro. Il metodo è il seguente (se non capisci l'inglese, non è necessario controllarlo):

Apri il registro, trova la chiave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters e aggiungi un elemento di tipo DWORD con il nome DisabledComponents (se ce n'è già uno, non è necessario aggiungerlo e modificare direttamente il valore ). Quindi modificare il valore su 20 e il tipo di valore su esadecimale. Questo è tutto, salva il registro e riavvia il computer. Prova di nuovo a eseguire il ping di localhost e riprova.


lascia un commento