公開されていない大きなファイル(1〜8 GB)がいくつかあります。現在、1MBのチャンクでファイルをバッファリングして出力に書き込むPHPスクリプトを介してそれらを提供しています。これは非常にCPUを集中的に使用し、アクティブなダウンロードが数回しかない場合はサーバーの速度を低下させます。 。ファイル転送作業をApacheまたはより効率的な方法に移行したい。Cookie認証を使用している。既存のPHPセッションCookie)を介してFTPセッションを認証する方法がない限り、FTPダウンロードは実行されない。
理想的には、PHPを使用して、ファイル転送作業をApacheに渡す間、ファイルへのリンクを非表示にできるものが必要です。これは、HTTPファイル転送の方が間違いなくはるかに効率的です。 PHP。ダウンロードも再開できるようにしたいと考えています。
どんな助けでも大歓迎です。
X-Sendfileは、このタイプの操作専用に作成されています。あなたはそれについて読むことができます http://codeutopia.net/blog/2009/03/06/sending-files-better-Apache-mod_xsendfile-and-php/
mod_auth_tktは面白そうです。 UNIXでホストされているApache/PHPセットアップの場合のローテクソリューションは次のとおりです。
ダウンロードをWebにアクセスできないディレクトリに保存し、PHPスクリプトを使用して、一意のシンボリックリンクを作成します。その後、指定した期間(24時間後など)後にシンボリックリンクを削除できます。 。
これが例です。ファイルが/ privateに保存され、.htaccessファイルで保護されていると仮定します。また、Apacheを実行しているユーザーが書き込み可能な/ publicディレクトリもあります。
擬似コード:
次に、cronjobを使用して、「find/public -type l -mtime +24 -exec rm {} \;」を実行できます。または、期限切れのシンボリックリンクの削除に似たもの。 (注:ファイルの削除にfindを使用する場合は十分に注意してください。)
このソリューションは、誰かが次の24時間リンクを共有することを妨げるものではないため、それが重要な状況ではおそらく適切ではありません。ただし、追加のApacheモジュールなどは必要ありません。
このServerfaultの質問 関連している可能性があります。または、 mod_auth_tkt のようなものを使用することもできます。
私は、FTPアカウントにオンラインでアクセスするための純粋なhtml/PHPインターフェースであるサービスコールNet2FTPを使用しました。ソフトウェアは比較的簡単にダウンロードしてインストールでき、非常に小さなWebサイトであるため、オーバーヘッドはありません。
このソフトウェアは非常に便利で使いやすいです、それはあなたの使用法に最適であるように思えます。
ホームページは http://www.net2ftp.com/ 、完全にフリーウェアです。