Web サービスから部分的なコンテンツをフェッチするブラウザ クライアントがありますRange: bytes=100000-200000
。リクエストは、PHP ページ fetch.php に入ります。その PHP ページで、要求された Range を使用して取得し、それを-$_SERVER['HTTP_RANGE']
を使用して curl 要求に設定します。私が抱えている問題は、リモートサーバーがステータスとヘッダーで応答しているのに、私の PHP ページが aと noで応答するだけなので、結果はクライアントが完全であると考える部分的なファイルになることです。問題は、元のリクエストの結果を PHP に設定するにはどうすればよいですか?curl_setopt
CURLOPT_RANGE
206 Partial Content
Content-Range
200 OK
Content-Range
Content-Range
前もって範囲がわかっている場合は、コマンドを使用するだけheader
で完了できますが、応答で範囲が返されます。コンテンツを含むすべてのヘッダーを受信するようにcurlで設定し、ヘッダーを解析し、それを使用header
して設定し、応答を206に設定してから、すべてのデータをエコーアウトできます...しかし、データはバイナリであり、言うまでもなく非常に大きいため、これは、せいぜい次善のようです。
PHPでオプションを設定して、独自のヘッダーを送信せず、基本的に応答全体をリクエスタにエコーバックすることができるかどうか疑問に思っていました。これを十分に考えないと、キャッシング、接続、プロキシなど、他のヘッダーで問題が発生する可能性があります。
おそらく、curl からヘッダー (ある種の partial_execute?) だけを受け取り、必要なものを取得し、ヘッダーと応答コードを設定してから、基本的に exec と実際の応答 get の出力を直接完了する方法がありますか? カールからそれを実現する方法がわかりません。
PHP スクリプトが実際にリソースのターゲット サーバーを決定するため (これは静的ではありません)、実際のリバース プロキシを設定することも実際にはオプションではありません。
curl の使用をスキップして、直接 TCP/TLS 接続を行い、HTTP 要求/応答を管理できると思います。
追加のアイデアや可能性はありますか? ありがとう!