服务器版本:Apache / 2.2.22(Debian) 服务器内置:2013年3月4日22:05:29
Phusion Passenger版本4.0.21
Alias /tester /var/www/tester/public
<Location /tester>
PassengerBaseURI /tester
PassengerAppRoot /var/www/tester
</Location>
<Directory /var/www/tester>
Allow from all
Options -MultiViews
#Enable response streaming
PassengerBufferResponse off
</Directory>
您好, 我在使用Apache时遇到'流'问题。如果我尝试运行以下代码,它会在将处理发送到客户端之前完成处理;
#app.rb
require 'sinatra'
get '/' do
stream do |out|
out << "foo\n"
sleep 10
out << "bar\n"
end
end
如果我从CLI运行应用程序启动瘦,sinatra或乘客,它将流'foo',然后一段时间后将流'bar'。
知道为什么Apache会缓冲输出吗?
答案 0 :(得分:0)
这是Sinatra的限制。 Sinatra流API仅支持基于EventMachine的服务器,而Phusion Passenger则不支持。不要使用Sinatra流API;相反,直接使用低级Rack API实现流式传输。您可以使用the Rack socket hijacking API来通过套接字发送原始HTTP响应。