2010-12-03 16 views
4

にXmlWriterからXMLを読み取るためのXMLReaderを使用して、私は二つのサーバサーバA、サーバB

を持つサーバーAが

$reader = new XMLReader(); 
$reader->open('http://www.some-url.com/xmlwriter_src.php'); 
while ($reader->read()) 
{ 
    /* -- do something -- */ 
} 

サーバBは、XMLストリーム

$writer = new XMLWriter(); 
$writer->openURI('php://output'); 
$writer->startDocument("1.0"); 

$writer->startElement("records"); 
while(!$recordset->EOF) 
{ 
    $writer->startElement($fieldname) 
    $writer->text($recordset->fields[$fieldname]); 
    $writer->endElement(); 
    $recordset->movenext(); 
} 
を作成
を使用して http://www.some-url.com/xmlwriter_src.phpを読み込み

サーバーAのxmlreaderは、サーバーBが応答しないと不満を持ち続けます。私はブラウザでxmlの結果を見ることができます。

それは私が静的なファイルにXMLをコピーする場合、XMLReaderがファイルを出力し

を生成するために、秒未満かかります。

答えて

0

デフォルトでは、出力がバッファされます。 完了したら、flush()を呼び出さなければなりません。

$writer = new XMLWriter(); 
$writer->openURI('php://output'); 
$writer->startDocument("1.0"); 

$writer->startElement("records"); 
while(!$recordset->EOF) 
{ 
    $writer->startElement($fieldname) 
    $writer->text($recordset->fields[$fieldname]); 
    $writer->endElement(); 
    $recordset->movenext(); 
} 
$writer->flush(); 

ところで ここでrecords要素を閉じますか?

+0

ここには表示されていませんが、元のコードです – user326096

1

Uは、読者が単純なテキストと文句を言わない仕事とさせて頂きますエルス

header("Content-Type: text/xml"); 

を追加しようとしたんでした。それをファイルの先頭に書いてみてください。

0

xmlReaderがディスク上で読み取りを行って、生成されたファイルを検査してみてください。私はそれが空または無効(不完全)XMLのいずれかの感情を持っています。 私が正しいとすれば、タイムアウトが実際のブラウザで取得したものよりも早く期限切れになることがあります。どちらか、または接続がクローズまたはキープアライブのどちらかを必要とする接続(私はこのようなサーバが壊れているのを見たことがあります)。

また、クライアントが実行されているxmlReaderがxmlWriterと通信できないようにするファイアウォールを持っていないことを確認してください。iptables -Lをサーバーコンソールで試して、ファイアウォールルールを確認してください。


編集:あなたはまた、あなたが接続を閉じると送信が終わったことをクライアントに知らせることそこに着いたどんなメンバーxmlReader->close()、またはend()かのような何かを呼び出す必要があります。

関連する問題