PHP တွင်ကြီးမားသော XML ဖိုင်များကို PHP တွင်ပြုလုပ်သောအခါသမားရိုးကျခွဲခြမ်းစိတ်ဖြာခြင်းနည်းစနစ်များ (ဥပမာ Simplexml_load_load_load_load_load_file () domdocument ) ကိုအလွယ်တကူဖြစ်ပေါ်စေနိုင်သည်။ ဆန့်ကျင်ဘက်အနေဖြင့် XML_Parse (Expat-based event-based arterser parser) ကိုအသုံးပြုခြင်းသည်ကြီးမားသော XML ဒေတာများကိုပိုမိုထိရောက်စွာလုပ်ဆောင်နိုင်သည်။ ဤဆောင်းပါးသည်အလွန်အမင်း XML_PLESSE ကို အသုံးပြု. ကြီးမားသော XML ဖိုင်များကိုထိရောက်စွာလုပ်ဆောင်ရန်နှင့်အကောင်းဆုံးသောနည်းစနစ်များနှင့်အကောင်းဆုံးအလေ့အကျင့်များကိုဝေမျှရန်အတိမ်အနက်ကိုလေ့လာနိုင်သည်။
XML_Parse သည်ဖြစ်ရပ်မှန်အခြေပြု XML parsing နည်းလမ်းဖြစ်ပြီး "streaming parser" နှင့်သက်ဆိုင်သည်။ ဆိုလိုသည်မှာ၎င်းသည် XML ဖိုင်တစ်ခုလုံးကိုတစ်ပြိုင်နက်တည်း loading လုပ်မည့်အစားမျဉ်းကြောင်းဖြင့်လိုင်းကိုဖတ်ပြီး Tags, Properties များ,
MB သို့မဟုတ် XML ဖိုင်များကို MB သို့မဟုတ် GB ပင်ဖြစ်သည်။
အနိမ့်မှတ်ဉာဏ်ပတ်ဝန်းကျင်မှာပြေးစနစ်များ;
ခွဲခြမ်းစိတ်ဖြာနေစဉ် (ဥပမာဒေတာဘေ့စ်များတင်သွင်းခြင်း,
XML_Parser_Create နှင့် XML_PLESS ကို အသုံးပြု. အခြေခံဖြစ်စဉ်ဥပမာကိုဤတွင်ဖော်ပြထားသည်။
<?php
$parser = xml_parser_create();
// callback function ကိုသတ်မှတ်ပါ
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");
// ဖိုင်ကြီးတစ်ခုဖွင့်ပါ
$fp = fopen("https://m66.net/data/largefile.xml", "r");
while ($data = fread($fp, 4096)) {
if (!xml_parse($parser, $data, feof($fp))) {
die(sprintf(
"XML အမှား: %s အတွက် %d အိုကေ",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)
));
}
}
xml_parser_free($parser);
fclose($fp);
// callback function ကိုဥပမာ
function startElement($parser, $name, $attrs) {
// Label အမည်အရယုတ္တိဗေဒ process နိုင်ပါတယ်
if ($name == "ITEM") {
echo "တစ်ခုစတင်စတင်ပါ ITEM\n";
}
}
function endElement($parser, $name) {
if ($name == "ITEM") {
echo "တစ် ဦး ၏အဆုံးသတ်အပြောင်းအလဲနဲ့ ITEM\n";
}
}
function characterData($parser, $data) {
// စာသားအကြောင်းအရာများကို tag တွင်လုပ်ဆောင်ပါ
$trimmed = trim($data);
if (!empty($trimmed)) {
echo "အချက်များ: $trimmed\n";
}
}
?>
ကြီးမားသောဖိုင်များကိုတစ်ပြိုင်တည်းဖတ်ရှုခြင်းကိုရှောင်ပါ မှတ်ဥာဏ်ပေါက်ကွဲမှုများကိုရှောင်ရှားရန်အတုံးများတွင်ဖိုင်အကြောင်းအရာများကိုဖတ်ရှုရန် file contents များကိုဖတ်ရန် File () ကို သုံးပါ။
ကျိုးကြောင်းဆီလျော်သော callback လုပ်ဆောင်ချက်များကိုသုံးပါ callback function တွင်အထူးသဖြင့် disk i / o သို့မဟုတ်ကွန်ယက်တောင်းဆိုမှုများတွင်ယုတ္တိရှိသောလုပ်ငန်းများကိုမလုပ်ဆောင်ပါနှင့်။
သင့်လျော်စွာ Global variable တွေကိုသင့်လျော်စွာသန့်ရှင်းရေးလုပ်ပါ Callback function တွင်ကမ္ဘာလုံးဆိုင်ရာ variable variable ကိုယာယီနေရာချထားသည့်အခါအချိန်မီ unset () သည် မှတ်ဥာဏ်ယိုစိမ့်မှုကိုတားဆီးနိုင်သည်။
stream processing ယုတ္တိဗေဒ Enable လုပ်ပါ ဒေတာဘေ့စ်လုပ်ငန်းများကိုပေါင်းစပ်သောအခါခွဲခြမ်းစိတ်ဖြာမှုတစ်ခုစီသည်အဖွဲ့အစည်းများအားလုံးကိုစုဆောင်းခြင်းထက်ဒေတာဘေ့စ်သို့စာဖြင့်ရေးသားထားသည်။
မလိုအပ်သောအင်္ဂါရပ်များကိုပိတ်ပါ အကယ်. namespace လိုအပ်ချက်မရှိပါကစွမ်းဆောင်ရည်တိုးတက်စေရန်အပိုဆောင်း namespace resolution ကိုရှောင်ရှားနိုင်သည်။
Coding ပြ issues နာများ - XML ဖိုင် encoding သည် PPP ဖိုင်နှင့်ကိုက်ညီမှုရှိပါစေ XML_Parser_set_option ($ parser, xml_option_target_encoding "setting ကိုသေချာအောင်လုပ်ပါ။ " Utf-8 ")
Entity ပြ problem နာ - အကယ်. ENTATICE ရည်ညွှန်းကို XML တွင် (ဥပမာ - NBSP ) တွင်အသုံးပြုပါက၎င်းသည်ခြွင်းချက်များကိုခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ကြိုတင်ပြင်ဆင်မှုများပြုလုပ်ရန်လိုအပ်သည်။
အမှားကိုင်တွယ်ခြင်း - XML_ERROROR_STRINGSTRING () နှင့် xml_get_current_line_number_Number_number_number_number ()) နှင့် xml_get_cubrent_line_number () () () () () ()) နှင့်ပုံနှိပ်ထုတ်ဝေခြင်း။
XML_Parse ကို အသုံးပြု. ကြီးမားသော XML ဖိုင်များကိုလုပ်ဆောင်ရန် PHP တွင်စွမ်းဆောင်ရည်မြင့်မားသော XML parsing ကိုအကောင်အထည်ဖော်ရန်အရေးကြီးသောနည်းလမ်းတစ်ခုဖြစ်သည်။ စာဖတ်ခြင်းဖြင့်ပြုလုပ်သောအဖြစ်အပျက် - မောင်းနှင်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်မှတ်ဉာဏ် overhead ကိုအလွန်လျှော့ချနိုင်ပြီးခွဲခြမ်းစိတ်ဖြာမှုစွမ်းရည်ကိုများစွာလျှော့ချနိုင်သည်။ သငျသညျဒီဇိုင်း, မှတ်ဉာဏ်ထိန်းချုပ်ရေးမဟာဗျူဟာနှင့်စွမ်းဆောင်ရည်ထိန်းချုပ်မှုညှိနှိုင်းမှုကျွမ်းကျင်မှုကျွမ်းကျင်မှုကျွမ်းကျင်မှုနှင့်စွမ်းဆောင်ရည် tuning ကျွမ်းကျင်မှုကျွမ်းကျင်မှု,
အကယ် . သင်သည် XML တင်သွင်းမှုအပေါ်မှီခိုနေသောစနစ်တစ်ခုကိုတည်ဆောက်နေပါကသင်၏ toolbox တွင်အလွန်လက်တွေ့ကျသည့်လက်နက်ဖြစ်လိမ့်မည်။