2010-09-15 55 views
43
  1. 是否使用localhost in mysql_connect()使連接速度快於使用127.0.0.1
  2. PHP腳本和mySQL之間的連接類型是什麼(當使用mysql_connect()函數時)?它是TCP/IP嗎?

回答

58
  1. Windows和Linux的區別。如果你使用unix域套接字,它會比使用TCP/IP稍微快一些(因爲你擁有更少的開銷)。
  2. Windows使用TCP/IP作爲默認設置,而Linux嘗試使用Unix域套接字(如果選擇localhost和TCP/IP,如果選擇127.0.0.1)。
+0

謝謝複製提供的默認稱爲php.ini.default

sudo cp /private/etc/php.ini.default /private/etc/php.ini 

!爲什麼Apache不通過基於TCP/IP或基於套接字的連接與PHP進行交互? – Joel 2010-09-15 08:44:01

+0

Apache使用mod_php或使用TCP/IP或Unix域套接字連接到PHP(當配置爲通過fastcgi運行時)。 – halfdan 2010-09-15 08:49:14

+6

+ linux中的令人討厭的事情是當你指定'localhost'作爲主機和一個特定的端口時,它只是忽略整個端口位並使用默認套接字,而不是在單個機器上運行多個服務器時需要的東西(因此不同的端口..)。 – Wrikken 2010-09-15 10:21:21

13

「localhost」表示本地套接字連接,而127.0.0.1表示TCP/IP。是的,套接字比TCP/IP更快。

http://pl.php.net/mysql_connect

引用每當你指定「localhost」或「本地主機:端口」爲服務器,MySQL客戶端庫將覆蓋這一點,並嘗試連接到本地套接字(在Windows命名管道)。如果你想使用TCP/IP,使用「127.0.0.1」而不是「localhost」。如果MySQL客戶端庫嘗試連接到錯誤的本地套接字,則應該在PHP配置中設置正確的路徑,並將服務器字段留空。

+7

TCP/IP也是基於套接字的。我知道你的意思,但你會把它弄糊塗。 – halfdan 2010-09-15 08:38:10

+2

它可能是'Unix-socket連接' – helios 2010-09-15 08:39:18

+0

你是對的。我將其改爲「本地套接字」來澄清。感謝您的注意。 – 2010-09-15 08:43:36

0

PHP的網站說:

注:

每當你指定 「localhost」 或 「本地主機:端口」 爲服務器,MySQL的 客戶端庫將覆蓋這一點,並 嘗試連接到本地套接字 (在Windows上命名管道)。如果您希望 使用TCP/IP,請使用「localhost」的「127.0.0.1」而不是 。如果MySQL客戶端 庫試圖連接到錯誤的 本地套接字,則應該像設置您的PHP 一樣設置 正確的路徑,並將服務器 字段留空。

我想速度差別太低了,你不應該擔心。

12

不可以,建議使用127.0.0.1,因爲Windows 7在選擇IPv4 & IPv4時存在問題。我試過這個,如果我使用本地主機,頁面重新加載大約1秒(1,04秒),當我使用127.0.0.1時,頁面重新加載50毫秒。兩者都在Windows 7下使用。
在Windows XP中,它沒有區別。

+0

有相同的經驗。從本地主機到127.0.0.1,我的延遲從1秒降到5毫秒。謝謝! – 2014-09-25 16:08:24

0

對於Unix,在/etc/mysql/my.cnf這一行添加到客戶端塊之後 [client]

protocol=tcp 
0

用於蘋果,這裏的解決方案:

連接到MySQL使用在MAC上的本地主機而不是127.0.0.1。很長一段時間以來,我一直在使用127.0.0.1在我的開發平臺上連接到MySQL,因爲某些原因localhost不工作​​。原因是127.0.0.1使用TCP/IP,localhost使用套接字。 php.ini文件指向mysql.sock的錯誤位置,所以你只需要改變它,重新啓動apache和瞧!

Open php.ini: /private/etc/php.ini 
Find the following line: mysql.default_socket = /var/mysql/mysql.sock 
Replace with: mysql.default_socket = /tmp/mysql.sock 
Restart apache: apachectl restart 

注意:如果你沒有一個php.ini文件,你需要通過http://madproject.com/general/connect-to-mysql-using-localhost-instead-of-127-0-0-1-on-a-mac/

相關問題