1

これを表現するためのより良い方法を見つけようとしていますが、私が望むのは非常に単純です (少なくとも、そうあるべきだと思います)。URL からファイルをダウンロードし (サイズは約 10MB のバイナリ ファイルになります)、それを同時に要求しているブラウザーにストリーミングしたいと考えています。私の知る限り、これはCURLOPT_RETURNTRANSFERまたはCURLOPT_FILEを設定しない場合のphpとcurlのデフォルトの動作であり、ドキュメントによると、CURLOPT_FILEがSTDOUT(ページ)に設定されているためです。しかし、私が望むのは、サーバーがサーバーから受信したものをエコーし​​、出力を記録してファイルに保存することです。後者の部分は、ファイルがまだダウンロードされている間に必ずしも発生する必要はありませんが、それが可能であればよいでしょう。

何か案は?

4

1 に答える 1

0

特に出力バッファリングとob_flush()を調べる必要がありますが、エラーの処理には十分注意してください。

PHP は通常、ブラウザーに何かを送信する前にすべてのスクリプトの実行を完了しようとしますが、これを手動でオーバーライドすると、スクリプトがまだ実行されているため、段階的にブラウザーにデータを送信できます。

別の方法として、この方法を使用したくない場合は、チャンク転送と既にロードされているページで XMLHttpRequests を使用し、データのチャンクをブラウザに供給するある種のサーバー コールバックを使用します。

于 2012-05-29T00:50:02.300 に答える