Я работаю над проектом Ruby on Rails для Windows. У меня установлены Ruby 1.86 и Rails 2.35. Все хорошо, пока я не попытался реализовать кометный процесс. У меня есть следующий код, написанный для ответа на длинный запрос javascript опроса. Но каждый раз, когда вызывается эта функция, она будет зависать весь сервер rails, второй запрос не может войти, пока не истечет время ожидания. (Я знаю, что есть джаггернаут, но сначала я бы хотел реализовать его сам):
Это связано с настройкой моего сервера? Проект будет развернут на сервере Linux с настройкой Ngix и Passenger, будет ли он испытывать ту же проблему?
def comet_hook
timeout(5) do
while true do
key = 'station_' + station_id.to_s + '_message_lastwrite'
if Rails.cache.exist?(key)
@cache_time = DateTime.parse(Rails.cache.read(key))
if @cache_time > hook_start
@messages = @station.messages_posted_after(hook_start)
hook_start = @cache_time
break
end
end
end
...
end
Также с кешем хранилища памяти Rails я получаю ошибку «невозможно изменить замороженный объект», поэтому приведенный выше скрипт работал только для меня, когда я переключился на кэш файлов. (