現実世界の問題:私はdinamicallyページを生成しています。このページは、ユーザーが取り出すxmlです(curl、file_get_contentsなど)。 ユーザーがリクエストをすると、彼は待機を開始し、データベースから大量のデータを取得し、xmlを構築し始めます(php domオブジェクトを使用)。いったん完了したら、print $ document-> saveXML()を実行します。この40メガバイトのドキュメントを作成するのに約8分かかります。それから私はページ/ドキュメントを提供する準備が整いました。今では60秒の接続タイムアウトを持つユーザーがいます。最初のオクテットを60秒ごとに送信する必要があると言いました。どのように私はそのようなことを達成することができますか?空のパケットを送信して接続をタイムアウトしないようにする
それは23987452行のコード原因誰もつもりはそれらを読んではありません投稿する無用なので、私は現実に非常に-擬似擬似コードとして、このページを提供するスクリプトを説明します:
- グラブすべてDBからデータ:行
- の膨大なセットが各列を通してのDOMDocument要素
- ループを作成して、データの一部を含むことのDOMDocumentにノード要素を追加
- コール$、DOM> saveXML()文書を文字列として取得する それはXML文書であり、それはない台無しparser.` をし
- ユーザーは、XML文書
"<?xml..."
で始める必要があるため、私は実際のデータを送信することはできません
1を取得するように、印刷文字列)
2)ユーザーは、私が対処することはできませんファイアウォール/ serverconfig
3)を扱うことができない私はのトップにのob_start()を使用してみました)
4「より強力なサーバーを購入」スクリプトを実行した後、各ループの開始時に"header("Transfer-Encoding: chunked"); ob_flush(); "
しかし何もない:何も8分の前に来ない。
私を助けてください!
あなたが行くにつれて出力するように、XMLを生成する必要があります。いずれか、またはバックグラウンドでファイルに出力し、準備ができたらファイルを提供します。 – Brad
私は準備が整うと、そのファイルを提供しています。私はそれをチャンクなどで提供する必要があります。しかし、私はそれを出力することはできません:phpのdomdocumentクラスはオブジェクトであるため、saveXML()を呼び出すと、終了タグ付きのXMLが生成されます。 –