Способ получить доступ к общему пулу ресурсов FTP-соединений в Ruby через вызовы AJAX? - PullRequest
0 голосов
/ 17 декабря 2010

У меня есть веб-приложение, которое устанавливает множество соединений FTP или SFTP с внешними серверами. Его интерфейс использует AJAX, и через AJAX я получаю списки файлов на удаленных FTP-серверах и возвращаю их в браузер клиента.

Каждый раз, когда я запускаю вызов AJAX, мне приходится повторно подключаться к удаленному серверу и повторно проходить аутентификацию. Это займет кучу дополнительного времени.

Можно ли каким-то образом сохранить объекты ресурса подключения FTP в некотором общем пуле памяти и повторно получить доступ к объектам ресурса подключения при последующих вызовах AJAX? Я попробовал Memcached, но, похоже, там невозможно хранить ресурсы подключения. Может быть, я мог бы хранить их в потоке и как-то получить к ним доступ? Есть другие идеи?

Я всегда мог иметь демон, управляющий соединениями и выступать в роли прокси, но это кажется излишним.

Ответы [ 2 ]

1 голос
/ 17 декабря 2010

Вы можете открыть соединение для каждого рабочего процесса / приложения, которое у вас есть.Например, для пассажира:

if defined?(PhusionPassenger)
  PhusionPassenger.on_event(:starting_worker_process) do |forked|
    if forked
      # connect to ftp server
    end
  end
end

Для Rails это будет равно environment.rb.

Тем не менее, я не уверен, что это отличная идея, так как я немного не использую ftp.

0 голосов
/ 14 апреля 2011

Я закончил эту работу, используя глобальные переменные (например, $ my_global).У меня есть одноэлементный класс ConnectionPooler, который управляет соединениями, хранящимися в хэше.Легко, как пирог.

...