mysql – 如何在Passenger分配工作进程后重置Datamapper连接?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 如何在Passenger分配工作进程后重置Datamapper连接?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含972字,纯文字阅读大概需要2分钟。
内容图文
![mysql – 如何在Passenger分配工作进程后重置Datamapper连接?](/upload/InfoBanner/zyjiaocheng/902/d68f8d706f094267ae00a80b0956818f.jpg)
在升级我的Rails应用程序的几个部分(Ruby 1.9.2,Rails 3.0.4,Datamapper 1.1.0)并转移到Passenger Standalone之后,我们开始得到奇怪的MySQL连接错误,包括:
>场数不匹配
>查询期间与MySQL服务器的连接丢失
> MySQL服务器已经消失
然后我记得Passenger forks进程,你需要为redis,memcache等等重新打开新的连接,否则数据流会出现乱码,我发现另外post由于MySQL的相同问题而进行类似的冒险.
但我还回忆起here,Passenger自动处理数据库连接.
所以我有两个问题:
1)如何告诉DataMapper创建和使用新的数据库连接?和/或:
2)分叉乘客是否自动处理分叉数据库连接?为了叉子的缘故…;)
解决方法:
要回答#2,否,Passenger本身在分叉后不处理关闭文件句柄.你必须自己管理它,除非你的宝石为你做.
为了回答#1,我拼凑了一些我发现的东西.添加到environment.rb并让我知道它是否有效!
if defined?(PhusionPassenger)
PhusionPassenger.on_event(:starting_worker_process) do |forked|
if forked
# We're in smart spawning mode.
DataObjects::Pooling.pools.each do |pool|
pool.dispose
end
else
# We're in direct spawning mode. We don't need to do anything.
end
end
end
内容总结
以上是互联网集市为您收集整理的mysql – 如何在Passenger分配工作进程后重置Datamapper连接?全部内容,希望文章能够帮你解决mysql – 如何在Passenger分配工作进程后重置Datamapper连接?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。