我正在尝试读取Symfony项目中的XML文件,以将数据发送到前端。
由于XML文件很大,我使用的是XMLReader和SimpleXML的组合(如本主题中所述:How to use XMLReader in PHP?)。
这是我的XML Reader代码:
class XMLReader {
private $xmlFile;
private $reader;
public function __construct($xmlFile = null)
{
$this->xmlFile = $xmlFile;
}
public function initReader()
{
$this->reader = new \XMLReader();
$this->reader->open($this->xmlFile);
}
public function getData()
{
$products = array();
$index = 0;
while ($this->reader->read()) {
while ($this->reader->name === 'product') {
$node = new \SimpleXMLElement($this->reader->readOuterXML());
array_push($products, $node);
$index++;
if ($index < 20)
$this->reader->next();
else
break 2;
}
}
return $products;
}
我的目标是一点一点地发送数据,因为它们将显示在带有分页的表格中。这意味着第一次,它将发送20个结果,然后当我们点击第2页时,它将请求接下来的20个结果。
有办法吗?
答案 0 :(得分:1)
在Symfony中,您可以使用StreamedResponse
通过小块发送响应。它通常用于发送大文件,因为它不需要将整个文件加载到内存中,但它也应该满足您的需求。
了解它在doc:http://symfony.com/doc/current/components/http_foundation.html#streaming-a-response
中的用法