У меня .xml
300 МБ +, 11kk строк. Мне нужно проанализировать каждый из разделов, таких как <Views>
, <Filters>
и т. Д. Во многих из этих разделов есть аналогичные столбцы, такие как <Name>
, для синтаксического анализа я проверяю текущий раздел и получаю внешний XML для анализа всех данных в текущем разделе. это единственный случай, который я нашел для анализа одинаковых столбцов в разных разделах
напр.
if ($this->reader->nodeType === XMLReader::ELEMENT && $this->reader->localName === 'Views') {
$file = $this->reader->readOuterXML();
$columns = [
"setUid" => "UID",
"setGuid" => "GUID",
"setUuid" => "ID",
"setName" => "Name",
];/
$this->parseBlocks($import, 'BoardColumn', $columns, $file);
}
Проблемы начинаются в секции <Assignments>
, потому что в этой секции 9kk строк и сервер не может выполнить $this->reader->readOuterXML()
Настройки php
memory_limit = 4096M
max_execution_time = 7200
max_input_time = 7200
post_max_size = 4096M
Настройки nginx
fastcgi_read_timeout 3600;
proxy_connect_timeout 3600;
proxy_send_timeout 3600;
proxy_read_timeout 3600;
send_timeout 3600;
структура xml
<Project xmlns="http://schemas.microsoft.com/project">
<Views>
<View>
<Name>Gantt &with Timeline</Name>
<IsCustomized>true</IsCustomized>
</View>
<View>
<Name>&Gantt Chart</Name>
<IsCustomized>true</IsCustomized>
</View>
</Views>
<Filters>
<Filter>
<Name>&All Tasks</Name>
</Filter>
<Filter>
<Name>&All Resources</Name>
</Filter>
</Filters>
<Groups>
<Group>
<Name>&No Group</Name>
</Group>
<Group>
<Name>&No Group</Name>
</Group>
</Groups>
<Tables>
<Table>
<Name>&Entry</Name>
<IsCustomized>true</IsCustomized>
</Table>
</Tables>
<ExtendedAttributes>
<ExtendedAttribute>
<FieldID>188743731</FieldID>
<FieldName>Tekst1</FieldName>
<Guid>000039B7-8BBE-4CEB-82C4-FA8C0B400033</Guid>
<SecondaryPID>255869028</SecondaryPID>
<SecondaryGuid>000039B7-8BBE-4CEB-82C4-FA8C0F404064</SecondaryGuid>
</ExtendedAttribute>
</ExtendedAttributes>
<Tasks>
<Task>
<UID>0</UID>
<GUID>9AB1E99A-12FA-E811-9DD3-2016B93223A9</GUID>
<ID>0</ID>
</Task>
</Tasks>
<Resources>
<Resource>
<UID>0</UID>
<GUID>A0CB8B7E-2A8C-436D-0000-0000000000FF</GUID>
<ID>0</ID>
<Type>1</Type>
<IsNull>0</IsNull>
</Resource>
</Resources>
<Assignments>
<Assignment>
<UID>13394</UID>
<GUID>B6C918FA-17FA-E811-9DD4-2016B93223A9</GUID>
<TaskUID>22636</TaskUID>
<TimephasedData>
<Type>1</Type>
<UID>13394</UID>
</TimephasedData>
<TimephasedData>
<Type>1</Type>
<UID>13394</UID>
</TimephasedData>
</Assignment>
</Assignments>
<BoardColumns>
<BoardColumn>
<UID>1</UID>
<GUID>43E41B9B-12FA-E811-9DD3-2016B93223A9</GUID>
<ID>0</ID>
<Name>Backlog</Name>
</BoardColumn>
<BoardColumn>
<UID>2</UID>
<GUID>44E41B9B-12FA-E811-9DD3-2016B93223A9</GUID>
<ID>1</ID>
<Name>Next up</Name>
</BoardColumn>
</BoardColumns>
<Sprints>
<Sprint>
<UID>1</UID>
<GUID>47E41B9B-12FA-E811-9DD3-2016B93223A9</GUID>
<ID>0</ID>
<Name>No Sprint</Name>
<DurationUnits>39</DurationUnits>
<Duration>PT0H0M0S</Duration>
</Sprint>
</Sprints>
</Project>