实际上你可以在同一时间解析XML与PHP的一小块所以你不要实际上是在所有需要多大的内存:
set_time_limit(0);
define('__BUFFER_SIZE__', 131072);
define('__XML_FILE__', 'pf_1360591.xml');
function elementStart($p, $n, $a) {
//handle opening of elements
}
function elementEnd($p, $n) {
//handle closing of elements
}
function elementData($p, $d) {
//handle cdata in elements
}
$xml = xml_parser_create();
xml_parser_set_option($xml, XML_OPTION_TARGET_ENCODING, 'UTF-8');
xml_parser_set_option($xml, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($xml, XML_OPTION_SKIP_WHITE, 1);
xml_set_element_handler($xml, 'elementStart', 'elementEnd');
xml_set_character_data_handler($xml, 'elementData');
$f = fopen(__XML_FILE__, 'r');
if($f) {
while(!feof($f)) {
$content = fread($f, __BUFFER_SIZE__);
xml_parse($xml, $content, feof($f));
unset($content);
}
fclose($f);
}
你怎么做解析? – 2012-06-19 20:31:18
你应该重新确定你的问题究竟需要什么。如果想按模式分割文件 - 问这个问题。如果你想要关于内存映射文件的建议 - 问这个问题。以上是有点混乱。 – jm666
我正在使用file_get_contents并对整个数据进行preg_match。 – Ajaxmint