我有两台服务器
服务器A使用
读取http://www.some-url.com/xmlwriter_src.php$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();
}
服务器A上的xmlreader一直在抱怨服务器B没有响应,即使我可以在浏览器中看到xml结果。
生成
需要不到一秒的时间如果我将xml复制到静态文件,xmlreader将输出该文件。
答案 0 :(得分:1)
你试过添加
吗?header("Content-Type: text/xml");
否则,读者会将其视为简单文本而无法正常工作。尝试在文件的开头给出它。
答案 1 :(得分:0)
默认情况下,writter会缓冲输出。 一旦完成,你必须调用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();
顺便说一下: 你在哪里关闭记录元素?
答案 2 :(得分:0)
尝试编写磁盘上的任何xmlReader读取并检查生成的文件。我预感它是空的或无效的(不完整的)XML。 如果我是对的,那么你可能会有一个超时,它比你在真正的浏览器中得到的更快到期。要么是那个,要么是需要连接关闭或保持连接的连接(我看过这样的服务器坏了)。
另外,请确保客户端运行的服务器上没有防火墙,这可能会阻止xmlReader与xmlWriter通信:)在服务器控制台中尝试iptables -L
以检查任何防火墙规则。
编辑:您可能还需要调用xmlReader->close()
或end()
之类的内容或您在那里关闭连接的任何成员,并通知客户端传输已结束。