Сохранять PHP-ресурс FTP-соединения через вызовы AJAX - PullRequest
1 голос
/ 17 декабря 2010

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

Это прекрасно работает.Однако каждый раз, когда запрашивается листинг каталога, сервер должен заново устанавливать соединение с FTP-сервером, что занимает много времени.

Мне необходимо сохранить ресурс PHP-соединения FTP при вызовах AJAX.Другими словами, соединение должно оставаться открытым, и я должен иметь возможность запускать ftp_nlist (), используя этот ресурс, без повторного установления соединения или повторной аутентификации, с каждым новым вызовом AJAX (конечно, до истечения времени ожидания соединения).

Кто-нибудь может придумать, как это сделать?

Ответы [ 4 ]

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

Я не думаю, что это возможно, используя библиотеку FTP в PHP. Я вижу, что у кого-то даже был запрос функции для него в PHP, но не похоже, что было предпринято какое-либо действие.

Единственный способ, о котором я могу подумать, - это использовать сторонний FTP-клиент, который поддерживает соединение открытым и взаимодействует с ним через PHP. (вместо стороннего ftp-клиента вы можете просто использовать встроенные в ОС функции FTP. Windows предоставляет их, как и Linux через программу «ftp».)

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

Извините, что добавил беспорядок без четкого ответа для вас, но это может быть полезно: http://www.eecho.info/Echo/php/client-url-library-php-curl/ Похоже, что вы управляете открытием и закрытием соединений, однако с точки зрения возвращения этой переменной клиенту и повторного ее использования, я не уверен, что это возможно (также это может просто очиститься от вашего контроля), в качестве альтернативы вы можете (в зависимости от конечной среды) рассмотреть возможность использования бэкэнда Java, вы можете написать код простого сервера и просто добавить код FTP сверху (ммм ... торт). Вот некоторые примеры того, что вам нужно для этого сделать:

http://fragments.turtlemeat.com/javawebserver.php

http://www.javaworld.com/javaworld/jw-04-2003/jw-0404-ftp.html

Это предполагает довольно большой контроль над тем, что выполняется в серверной среде, хотя на самом деле это зависит от того, владеете ли вы сервером в основном или имеете полные привилегии делать то, что вы хотите (например, Amazon EC2 из того, что они рекламируют, по крайней мере). Возможно, вам удастся осуществить это с Tomcat или другим JSP-контейнером и использовать JSP вместо того, чтобы писать свой собственный сервер, но я не знаю, сможете ли вы сохранить соединение с ними, так как это похоже на PHP где сервер обычно интерпретирует файл "на лету", так сказать.

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

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

0 голосов
/ 18 декабря 2010

Вы не можете создать постоянное FTP-соединение с функциями PHP обычных классов ftp. Все ли пользователи обращаются к одному и тому же ftp-серверу или у вас запущен ftp-интерфейс? Если к одному серверу подключено несколько пользователей (с одинаковыми правами), вы можете реализовать кэшированное решение.

...