我有一个web服务方法,读取一张照片并返回其字节数据。我目前做如下:ruby IO.read()锁吗?
@photo_bytes = IO.read("/path/to/file")
send_data(@photo_bytes, :filename => "filename", :type => "filetype", :disposition => "inline")
调用这个了很多,当我收到一些奇怪的行为......偶尔SEND_DATA被返回null。我在想如果一个文件还没有关闭,也许我正在读竞争。使用IO.read打开文件后,是否需要显式关闭文件?我如何使用read_nonblock来做到这一点,它会值得吗?
UPDATE:
所以我做了一些更多的记录和偶尔IO.read就像是1800个字节返回一个值时,它通常返回〜用于图片5800个字节。当它返回1800字节时,图片不会显示在客户端上。当两个用户调用Web服务时,这种情况发生得相当随机。
感谢
汤姆
一旦给定的文件被写入,它将永远不会被更新。这是个人资料照片系统。用户上传照片,它由多个用户多次检索。如果用户上传新照片,则会创建一个新文件。当我有很多用户点击该网站时,似乎send_data偶尔会发送空值。 – cakeforcerberus 2009-09-01 00:16:10
而“很多”我的意思是两个。 :) – cakeforcerberus 2009-09-01 00:16:46
哦,另外,我还用<%image_tag filename%>提取数据 - 是否锁定文件? – cakeforcerberus 2009-09-01 00:18:50