1

AJAX 経由で FTP サーバーと対話できるマルチユーザー PHP Web アプリケーションがあります。このアプリケーションにより、ユーザーは FTP サイトを閲覧できます。Javascript は、特定のディレクトリ内のファイルとディレクトリのリストを返すサーバー スクリプトと通信する AJAX 呼び出しを行います。

これはうまくいきます。ただし、ディレクトリ リストが要求されるたびに、サーバーは FTP サーバーとの接続を再確立する必要があり、これには多くの時間がかかります。

AJAX 呼び出し全体で FTP 接続 PHP リソースを永続化する必要があります。言い換えると、接続は開いたままにしておく必要があり、新しい AJAX 呼び出しごとに (もちろん接続がタイムアウトするまで)、接続を再確立したり再認証したりすることなく、そのリソースを使用して ftp_nlist() を実行できる必要があります。 .

誰でもこれを行う方法を考えることができますか?

4

4 に答える 4

2

PHPでFTPライブラリを使用することは不可能だと思います。誰かが PHP で機能のリクエストをしたことさえありますが、それに対して何らかのアクションが取られたようには見えません。

私が考えることができる唯一の方法は、接続を開いたままにし、PHP を介してそれとやり取りするサードパーティの FTP クライアントを使用することです。(サードパーティの ftp クライアントの代わりに、OS に組み込まれている FTP 機能を使用することもできます。Linux と同様に、Windows は "ftp" プログラムを介して提供します。)

于 2010-12-17T20:45:43.340 に答える
1

明確な答えがなくて混乱を招いて申し訳ありませんが、これは役立つかもしれません : 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 と同じようなものであるため、接続を永続化できるかどうかはわかりません。サーバーは通常、いわば「その場で」ファイルを解釈します。

于 2010-12-17T21:05:03.107 に答える
0

グローバル変数 (例: $my_global) を使用してこの作業を行うことになりました。ハッシュに格納された接続を管理する ConnectionPooler シングルトン クラスがあります。

于 2011-04-14T13:51:37.310 に答える
0

PHP の通常の ftp クラス関数を使用して永続的な FTP 接続を作成することはできません。すべてのユーザーが同じ ftp サーバーにアクセスしていますか、それとも ftp Web インターフェイスを実行していますか? 複数のユーザーが (同じ権限で) 同じサーバーに接続している場合は、キャッシュされたソリューションを実装できます。

于 2010-12-17T21:18:41.187 に答える