1

検索エンジンにリクエストを送信し、提供された結果にアクセスし、結果から詳細を抽出して、より便利な形式で出力するPHPスクリプトを作成しました。

それはすべてうまく機能しますが、偶然に私が発見したのは、データがストリーミングされるのを待っている間にechoまたはprintを呼び出すと、出力もストリーミングされる可能性があるということです。具体的には、結果が複数ページあるので、最初のページにアクセスしてコンテンツを読み込んで再印刷し、次のページに移動すると、次のページが読み込まれるのを待っている間に、前のページのコンテンツがブラウザ。

私が理解していないのは、なぜこれが一貫して発生しないのかということです。次のページに移動する前に、正確に1ページが印刷される場合もあれば、それより少ない場合と多い場合もあります。その後、基本的に同じことを行った場合(各結果が指すページを読んでください)、出力はほとんどストリーミングされず、1分ごとに再描画されます。

私はコンテンツを取得するために使用しており、これまでにロードされたものを出力するためにその中にfile_get_contents($url)関数を呼び出しています。echoこのストリーミング印刷の動作はブラウザの機能であり、PHPで記述したものとは無関係ですか?そうでない場合、どうすればそれをよりよく制御できますか?

4

1 に答える 1

5

最も簡単な修正は、出力バッファリングを使用することです。基本的な考え方はob_start()、スクリプトの最初に呼び出してからob_end_flush()、ページのコンテンツをクライアントに送信するときに呼び出すことです。これを行うと、プログラムに送信させるまで、すべての出力が保存されます。

于 2011-01-17T03:45:45.520 に答える