0

When I connect to a mysql database in PHP, and the db is hosted on the same machine as the site itself, I can either use the machine's IP, or 127.0.0.1

Is there a difference in performance between the two? Is there a guideline for when I should use 127.0.0.1?

4

4 回答 4

3

当您想连接到本地机器时,您应该始终使用localhost127.0.0.1,因为服务器可能会拒绝访问任何其他接口。另外,当 IP 更改时,您需要做大量工作来更改您放置在某处的 IP 的每一次出现。

但是,环回地址应该稍微快一点,但我想没有人可以以可靠的方式测量它,因此:你不应该关心。而且,当您无论如何都使用环回时(如上所述),那么您就安全了。

于 2012-08-08T18:35:30.700 回答
2

这两个请求最终都会在到达接口之前到达内核路由表。除非环回地址具有内核优化,否则不应该有任何影响。

于 2012-08-08T18:34:47.067 回答
2

通过 127.0.0.1 连接可能会带来非常小的(不明显)性能优势,因为它不需要在连接时检查那么多防火墙/路由规则。

如果您可以选择,请通过 unix 域套接字(通常类似于/tmp/mysql.sock)进行连接。通过这种方法进行连接有一定的性能提升,同时也提高了安全性。

编辑

根据 MarcB 的评论,显然连接方式localhost将自动尝试通过域套接字进行连接。如前所述,这是首选且性能最高的方法,

于 2012-08-08T18:35:32.403 回答
0

除非服务器上有一些非常奇怪的网络配置,否则性能应该是相同的。

至于指导方针,这取决于,如果您的数据库服务器将来可能会更改,也许您应该将该 url 存储在某个 xml 文件或任何文件中,以便应用程序稍后可以读取该配置。通过这样做,您不必担心使用任何 ip 甚至主机名或 localhost。您甚至可以尝试为此查看 DynamicDns。

如果服务器不太可能改变,那么不要太担心。使用 'localhost' 而不是任何 ip,以防万一服务器 ip 发生变化。文件选项仍然是一个很好的做法,但如果您不使用它,它不会对您造成太大伤害。

于 2012-08-08T18:40:35.473 回答