symfony — Обрабатывает XML-файл в PHP и отправляет данные постепенно

Я пытаюсь прочитать файл XML в проекте Symfony, чтобы отправить данные во внешний интерфейс.

Поскольку файл XML огромен, я использую комбинацию XMLReader и SimpleXML (как предлагается в этой теме: Как использовать XMLReader в PHP?).

Вот мой код для чтения XML:

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

Решение

В Symfony вы можете отправить ответ небольшими порциями, используя StreamedResponse. Обычно он используется для отправки больших файлов, потому что он не требует загрузки всего файла в память, но также должен отвечать вашим потребностям.

Посмотрите, как это используется в документе: http://symfony.com/doc/current/components/http_foundation.html#streaming-a-response

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]