3

我正在使用以下环境。

  • 导轨 3.1
  • 独角兽
  • mysql

我必须分叉一个生成调用的进程。人们告诉我使用

ActiveRecord::Base.connection.reconnect!

因为有些司机可能会失去与前叉的连接......我寻找了一些相关信息,但我比以前更困惑......这是我的疑问:

1 使用有什么区别

ActiveRecord::Base.connection.reconnect!

::ActiveRecord::Base.clear_all_connections!

在分叉和

::ActiveRecord::Base.establish_connection

如图所示?Mysql,在 Ruby 中使用 fork

2 我应该一直这样做吗?

如果答案是YES有什么地方可以把它作为“分叉配置”?

3 当分叉进程结束时,连接会发生什么? 我应该关闭它吗?还是自动关闭?父亲的过程连接附加了什么?

4 所有数据库连接都需要它吗?

我在某处读过仅适用于 Postgres DB 的地方...

谢谢

4

2 回答 2

0

你需要在你的 fork 中建立一个新的连接,即使它没有数据库访问权限。

因为当 fork 进程退出时,它会关闭它复制的连接,这与它的父进程正在使用的连接相同,这可能会中断父进程。反之亦然。

于 2014-02-19T16:40:31.250 回答
0

不,从我的角度来看,您不必重新连接.. 如果您想访问不同的数据库,您只需要连接,据我所知,rails 自己处理 mysql 的重新连接。

于 2013-05-22T16:26:13.853 回答