ftp_put - Persista un recurso PHP de conexión FTP a través de llamadas AJAX
ftp_put php (4)
Tengo una aplicación web PHP multiusuario que puede interactuar con un servidor FTP a través de AJAX. La aplicación permite al usuario navegar por un sitio FTP. Javascript realiza una llamada AJAX que se comunica con un script de servidor que devuelve una lista de archivos y directorios dentro de un directorio determinado.
Esto funciona bien Sin embargo, cada vez que se solicita una lista de directorios, el servidor debe restablecer una conexión con el servidor FTP, lo que lleva mucho tiempo.
Necesito persistir un recurso PHP de conexión FTP a través de llamadas AJAX. En otras palabras, la conexión debe permanecer abierta, y debo poder ejecutar ftp_nlist () usando ese recurso, sin restablecer la conexión o volver a autenticar, con cada nueva llamada AJAX (hasta que la conexión expire, por supuesto) .
¿Alguien puede pensar en una forma de hacer esto?
No creo que sea posible usar la biblioteca de FTP en PHP. Veo que alguien incluso tiene una función solicitada en PHP, pero parece que no se tomó ninguna medida al respecto.
La única forma en que puedo pensar es usar un cliente FTP de terceros que mantenga la conexión abierta e interactuar con ella a través de PHP. (en lugar de un cliente ftp externo, puede usar las funciones FTP integradas en el SO. Windows las proporciona, al igual que Linux a través del programa "ftp").
No puede crear una conexión FTP persistente con las funciones de las clases ftp normales de PHP. ¿Todos los usuarios acceden al mismo servidor ftp o están ejecutando una interfaz web ftp? Si hay varios usuarios conectados al mismo servidor (con los mismos derechos), puede implementar una solución en caché.
Perdón por agregar desorden sin una respuesta clara para ti, pero esto podría ser útil: http://www.eecho.info/Echo/php/client-url-library-php-curl/ Parece que tienes el control de apertura y cierre las conexiones, sin embargo, en términos de devolver esta variable al cliente y hacer que se vuelva a utilizar, no estoy seguro de que sea posible (también podría limpiarse a sí mismo fuera de su control), como alternativa, podría (dependiendo del entorno final) Considere usar un backend Java, puede codificar un servidor simple y simplemente agregar el código FTP en la parte superior (mmm ... cake). Algunos ejemplos de lo que necesitarías hacer para eso están aquí:
http://fragments.turtlemeat.com/javawebserver.php
http://www.javaworld.com/javaworld/jw-04-2003/jw-0404-ftp.html
Esto supone una gran cantidad de control de lo que se ejecuta en el entorno del servidor, de modo que realmente depende de que usted sea el propietario del servidor o que tenga todos los privilegios para hacer lo que quiera (como Amazon EC2 a partir de lo que anuncian al menos). Es posible que pueda realizar esto con Tomcat o algún otro contenedor JSP y usar JSP en lugar de escribir su propio servidor, pero no sé si podrá mantener la conexión ya que es similar a PHP. donde el servidor generalmente interpreta el archivo "sobre la marcha", por así decirlo.
Terminé haciendo este trabajo usando variables globales (por ejemplo, $ my_global). Tengo una clase singleton ConnectionPooler que administra las conexiones almacenadas en un hash.