Привет мне нужна помощь относительно передачи массива, который заполняется в модели для просмотра.
Позволь мне объяснить:
На самом деле, я использую синтаксический анализатор SAX XML для анализа огромных XML-каналов из внешней ссылки.
Я ограничен использованием только 32 МБ памяти и не могу сохранить каналы XML как локальный файл. Таким образом, используя SAX, в цикле while я читаю 4 МБ фида, затем могу отобразить или назначить в массиве, затем освободить объект синтаксического анализатора SAX для освобождения памяти и так далее.
Теперь XML точно анализируется, но все это делается в модели. Как я могу передать канал чтения для просмотра, пока цикл постоянно читает канал.
Код
$parser = xml_parser_create();
xml_set_element_handler($parser, Array(&$this, "startElements"), Array(&$this, "endElements"));
xml_set_character_data_handler($parser, Array(&$this, "characterData"));
// open xml file
if (!($handle = fopen($url, "r"))) {
die("could not open XML input");
}
while ($data = fread($handle, 4096)) { // read xml file
xml_parse($parser, $data); // start parsing an xml document
}
xml_parser_free($parser); // free/delete the parserpublic function characterData($parser, $data)
{
global $products, $elements;
if (!empty($data)) {
if ($elements == 'NAME' || $elements == 'PRICE' || $elements == 'PRODUCTURL' || $elements == 'PRODUCTID' || $elements == 'CATEGORY'|| $elements == 'IMAGEURL') {
$products[count($products) - 1][$elements] = trim($data);
}
}
}
Пожалуйста, помогите, как я могу показать массив продуктов в поле зрения, так как цикл постоянно заполняет массив продуктов, и я не могу загрузить весь канал в буфер памяти.
Задача ещё не решена.
Других решений пока нет …