由于第三方库的限制,我需要使用具有静态名称的文件。如果多个用户试图同时写入该文件,在Rails中会发生什么?EACCESS错误?
有什么办法可以规避吗?
在Ruby级别上,如果多个进程尝试写入文件会发生什么情况,取决于库使用文件的方式:在打开文件之前是否锁定文件以及锁定文件的方式以及打开文件的方式。它可能会起作用,它可能会引发错误,或者(很可能,如果库不采取任何措施来处理这种情况),多个编写者可能以一种可能破坏文件的方式静默地相互交错写操作,否则最后一个编写者可能会获胜。
在Rails级别,这取决于您如何运行Rails。如果在给定的服务器上运行一个通常配置的Rails实例,则不会有任何问题,因为默认情况下Rails本身是单线程的。如果您运行多个Rails实例(大概是由旅客或独角兽之类的应用程序服务器控制的),则可能会遇到问题。
假设该库无法为您处理多个编写器,则可以通过以下两种方法解决该问题:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句