Durante el proceso de desarrollo de php + mysql, al completar el nombre de host para conectarse a la base de datos, la máquina local generalmente puede usar localhost o 127.0.0.1. En el proceso de aplicación real, no se encontraron anomalías en el sistema Linux, pero. En el sistema del servidor Windows, hay Al escribir localhost, la respuesta de la página web será relativamente lenta. Generalmente, se necesita más de 1 segundo para completar una página. Juzgué el tiempo de ejecución del programa paso a paso y descubrí que era un problema. al conectarse a mysql, se necesita casi 1 segundo para establecer una conexión. Si hay un problema, búsquelo y descubra que esta situación existe. El extracto es el siguiente:

HTTP://blog.Sina.com.abilities/是/blog_6cost 5ah 76 cabello 0100 una pintura.HTML

Recientemente, descubrí que el tiempo de respuesta del programa era un poco lento, así que lo eliminé gradualmente y calculé el tiempo de ejecución de cada programa. Finalmente, descubrí que no había una buena manera de perder tiempo al vincular la base de datos. vincule la base de datos, así que la dejé.

Al día siguiente, probé el enlace remoto a la base de datos y descubrí que el tiempo de ejecución de usar IP para acceder a la base de datos era muy corto y mucho más corto que cuando usaba localhost para conectarme a la base de datos localmente. Entonces tenemos la siguiente prueba:

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


El resultado de salida es: la pérdida de tiempo del host local es: 0.98833055122226

La pérdida de tiempo de 127.0.0.1 es: 0.0039590807522044

 

El consumo de tiempo de los dos métodos de conexión es muy diferente. Sería fantástico si un experto pudiera ayudar a responder esta pregunta.

Supuse que podría deberse a la resolución de DNS o que la resolución del host local lleva tiempo. Por favor explique que estoy usando un sistema de ventanas.

Explicación del motivo:

De hecho, es un problema de análisis del sistema operativo. Para obtener más información, consulte http://www.cnblogs.com/hayywcy/p/5341550.html.

Hoy encontré un problema extraño. Al acceder a localhost, me indicó que no se encontraba 404, pero se podía acceder a 127.0.0.1. Finalmente, se encontró el motivo porque Windows resolvió localhost en la dirección ipv6::1 en lugar de 127.0.0.1. Revisé los hosts y descubrí que ipv6 estaba bloqueado. También hay 127.0.0.1 localhost, pero no se puede resolver normalmente. Baidu buscó durante mucho tiempo sin éxito y finalmente encontró una solución en Google utilizando métodos científicos de Internet. Para evitar que se pierda la publicación original, la volví a publicar aquí (dirección de la publicación original: http://superuser.com/questions/). 436574/ipv4-vs-ipv6-prioridad-en-windows-7/436944#436944).

Contenido del artículo:

SOLUCIÓN #1: AGREGAR UNA POLÍTICA DE PREFIJO PARA PREFERIR LAS DIRECCIONES IPV4 SOBRE IPV6 La tabla de políticas de prefijo es similar a una tabla de enrutamiento, determina qué direcciones IP se prefieren al realizar una conexión. Tenga en cuenta que una mayor precedencia en las políticas de prefijo está representada por una "precedencia" mayor. valor, exactamente opuesto al valor de "costo" de la tabla de enrutamiento.

Tabla de políticas de prefijo de Windows predeterminada:

C:\netsh interface ipv6 show prefixpolicies Consultando estado activo...

 Prioridad  Etiqueta  Prefijo

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

 50      0  ::1/128

 40      1  ::/0

 30      2  2002::/16

 20      3  ::/96

 10      4  ::ffff:0:0/96

  5      5  2001::/32 Tenga en cuenta que se prefieren las direcciones IPv6 (::/0) a las direcciones IPv4 (::/96, ::ffff:0:0/96) .

 

Podemos crear una política que hará que el túnel IPv6 de Hurricane Electric sea menos favorable que cualquier dirección IPv4:

netsh interface ipv6 add prefixpolicy 2001:470::/32 3 6 2001:470::/32 es el prefijo de Hurricane Electric, 3 es una precedencia (muy baja) y 6 es una etiqueta.

Podría haber usado un prefijo más genérico, pero quería asegurarme de que, si obtengo una conectividad IPv6 directa de un ISP, tendrá prioridad sobre IPv4.

Si adapta esta solución, deberá sustituir un prefijo IPv6 apropiado en lugar de mi Hurricane Electric.

SOLUCIÓN #2: MODIFICAR EL REGISTRO PARA HACER QUE WINDOWS SIEMPRE PREFIERA IPV4 A IPV6

Esta solución es más genérica, pero más invasiva y menos compatible con los estándares. Al final, Windows seguirá modificando la tabla de políticas de prefijos por usted.

Abra RegEdit, navegue hasta HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters Cree el valor de registro DWORD de DisabledComponents y establezca su valor en 20 (hexadecimal).

Consulte Microsoft KB 929852 para obtener más información sobre esta clave de registro, especialmente si DisabledComponentsalya existe en su sistema.

Según la traducción, Windows tiene una lista de análisis de prioridad. Cuando ipv6 tiene una prioridad más alta que ipv4, ocurrirá la situación que encontré hoy (aunque aún no se encuentra el motivo). La primera forma es agregar un registro con una prioridad de ipv4 mayor que ipv6 a la tabla de análisis de prioridad. Debido a que muchas palabras no se pueden entender y tengo miedo de equivocarme con los parámetros, no me atrevo a usarlo. Lo resolví con el segundo método, que consiste en modificar el registro. El método es el siguiente (si no entiendes inglés, no es necesario que lo consultes):

Abra el registro, busque la clave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters y agregue un elemento de tipo DWORD con el nombre DisabledComponents (si ya tiene uno, no necesita agregarlo y cambiar el valor directamente ). Luego modifique el valor a 20 y el tipo de valor a hexadecimal. Eso es todo, guarde el registro y reinicie la computadora. Intente hacer ping a localhost nuevamente e inténtelo.


Deja una respuesta