Ruby on Rails database.yml中的socket声明是什么?

Dan*_*l R 9 mysql database sockets configuration ruby-on-rails

config/database.yml中套接字声明的用途是什么?

示例代码:

staging:
  adapter: mysql
  encoding: utf8
  database: (database)
  pool: 5
  username: (user)
  password: (pass)
  socket: /tmp/mysql.sock     # <--------- this line
Run Code Online (Sandbox Code Playgroud)

我的应用程序正常工作,这条线是否被评论.那有什么用呢?我有什么理由可以留下它,评论它或改变它的价值?

yfe*_*lum 12

当两个程序想要通过网络相互通信时,一个程序可能会打开与另一个程序的TCP连接("套接字").第一个程序需要知道第二台计算机的IP地址和程序正在侦听的端口.

在Linux上,当同一台计算机上的两个程序想要相互通信时,它们仍然可以打开TCP连接.但他们也可以通过"套接字文件"打开连接.Linux使套接字文件API与TCP API非常相似,因此更新已经通过TCP通过网络进行通信的程序以支持通过套接字文件进行通信并不是什么大问题.套接字文件比TCP快,但仅在两个程序在同一台计算机上时才有效.


noo*_*odl 5

MySQL有两种在unix-ish系统,tcp/ip和域套接字上与它通信的方法.通过指定套接字Rails,或者说数据库驱动程序,将使用套接字而不是网络连接.它可以更快地使用插座,但YMMV.

http://dev.mysql.com/doc/refman/5.5/en/connecting.html