2

ファイルのダウンロードを強制する必要があるサービスをプログラミングしています。

PHPを使用してHTTPヘッダーを設定し、readfile-functionを使用してファイルを送信する可能性を知っています。しかし、これは大きなファイルを送信するのに適した方法ではないと思います。多くのサーバーパフォーマンスが必要になり、PHPスクリプトの最大実行時間が超過するためです。

では、PHPを使用してHTTPヘッダーを送信し(mysqlデータベースのエントリに応じて変更する必要があります)、Apacheにファイル本文を送信させることは可能ですか?perlスクリプトも使用できることを付け加えなければなりませんが、cgi-scriptでこれを実行する可能性もありません。ありがとう。

4

3 に答える 3

0

ダウンロードの場所やファイルタイプが事前にわかっている場合は、apacheを使用してこれを厳密に行うことができます。

<Location /downloads>
    SetEnvIf Request_URI ".attachment-extension$" FILENAME=$0
    Header set "Content-disposition" "attachment; filename=%{FILENAME}"
</Location>
于 2011-10-15T19:11:37.970 に答える
0

このリンクを見つけました: http://jasny.net/articles/how-i-php-x-sendfile/。X-Sendfile は、まさに私がやりたいことを可能にしているように見えるモジュールです。HTTP 応答の本文をリダイレクトし、Apache にすべてを処理させます。インストールして試してみたところ、問題なく動作します。

于 2011-10-16T08:58:08.407 に答える
0

多くのサーバーパフォーマンスが必要になるため

私はこれが事実だとは思わない。ファイルをクライアントに送信することが、スクリプトが終了する前に行う最後の処理である限り、PHP からファイルを送信する場合と Apache に直接処理させる場合の CPU/RAM パフォーマンスの違いは、たとえあったとしても最小限に抑える必要があります。

非常に高速な HDD セットアップを備えたサーバーに非常に多くの Gbps 帯域幅がない限り、サーバー システム リソースの問題が発生するずっと前に、帯域幅の問題が発生します。

確かに、この議論は主に推測に基づいているため (私はあなたのホスティング設定について何も知らないため)、YMMV.

PHP スクリプトの最大実行時間を超える可能性があります

だからただ電話してset_time_limit(0);ください。そのためです。

于 2011-10-15T19:49:55.007 に答える