PHP တွင် zip ဖိုင်များ operating လုပ်သည့်အခါအသုံးပြုသောလုပ်ဆောင်ချက်များတွင် zip_open () နှင့် zip_read () ပါဝင်သည်။ ဤရွေ့ကားလုပ်ဆောင်ချက်နှစ်ခုကို zip ဖိုင်တစ်ခုကိုဖွင့်ပြီး en entries များကိုတစ်ခုဖတ်ရန်ပေါင်းစပ်နိုင်သည်။ သို့သော် developer များမကြာခဏပြ a နာတစ်ခုမကြာခဏကြုံတွေ့ရလေ့ရှိသည် - zip_read () entry ကိုဖတ်ရန် () entry ကိုဖတ်ရှုရန်အတွက်အစီအစဉ်တွင်ပရိုဂရမ်သည်အဆုံးမဲ့ကွင်းဆက်တစ်ခုသို့ကျဆင်းသွားပြီးအစီအစဉ်ကိုပင်အသုံးပြုခြင်းနှင့်ပရိုဂရမ်ကိုပင်ပျက်ပြားစေနိုင်သည်။
ဤဆောင်းပါးသည် zip_read ရှိ အဆုံးမဲ့ကွင်းများဖြစ်ပေါ်လာသောအကြောင်းရင်းများကိုရှင်းပြခြင်းနှင့်ထိရောက်သောကြိုတင်ကာကွယ်ရေးနည်းလမ်းများပေးသည်။
Zip_read () သည် Zip file တစ်ခုတွင် entries များကိုဖတ်ရှုသောအခါအတွင်းပိုင်းညွှန်ကြားချက်များဖြင့်ကြားနာသည်။ အကယ် . Zip ဖိုင်သည်အကျင့်ပျက်ပြားသွားပါကသို့မဟုတ်အဆုံးသတ်ရန်အခြေအနေကိုမှန်ကန်စွာမခေါ်ပါ။
ဘုံအကြောင်းပြချက်များတွင်:
ZIP ဖိုင်သည်အကျင့်ပျက်ခြစားမှုသို့မဟုတ်ပုံမှန်မဟုတ်သော format ရှိ . entry pointer ကိုမှန်ကန်စွာမရွေ့ရစေဘဲ။
ထိုကဲ့သို့သောအဘယ်သူမျှမတရားသဖြင့်စီရင်ခြင်းအဘယ်သူမျှမတရားသဖြင့် စီရင်ခြင်းအခွအေနေအခွအေနေအမှားများအတွက်မြို့ပတ်ရထားအခြေအနေ ။
ZIP အရင်းအမြစ်ကိုမှန်ကန်စွာမပိတ်ထားပါ, သို့မဟုတ် pointer ပြောင်းရွှေ့ခြင်းမရှိပါ ။
အောက်ပါဥပမာသည် Zip_Read () ကို လုံခြုံစွာအသုံးပြုခြင်းကို Zip file တစ်ခုရှိ Traverse entries များကိုမည်သို့ကိုင်တွယ်ရမည်ကိုပြသသည်။
<?php
$zipFile = 'http://m66.net/sample.zip';
// ဖွင့်လှစ် ZIP စာချုပ်စာတမ်း
$zip = zip_open($zipFile);
if (!is_resource($zip)) {
echo "无法ဖွင့်လှစ် ZIP စာချုပ်စာတမ်း";
exit;
}
while (($zipEntry = zip_read($zip)) !== false) {
$entryName = zip_entry_name($zipEntry);
// ထုတ်ယူခြင်း entries တွေကို
echo "读取စာချုပ်စာတမ်း条目:$entryName\n";
// ဖွင့်လှစ်条目
if (zip_entry_open($zip, $zipEntry)) {
$contents = zip_entry_read($zipEntry, zip_entry_filesize($zipEntry));
// အကြောင်းအရာကိုထုတ်ယူခြင်း,ဥပမာအားဖြင့်သိမ်းဆည်းခြင်းသို့မဟုတ်ပြသခြင်း
zip_entry_close($zipEntry);
}
// မှတ်သား:zip_read() အလိုအလျောက်လာမည့် entry ကိုရွှေ့
}
// ရုပ်သိမ်းခြင်း ZIP ပစ္စည်းအင်းအား
zip_close($zip);
?>
အဓိကအချက်များ
Zip_Read () ကွင်းဆက်ကိုသုံးသောအခါ, သင်သည်အခြေအနေကိုသေချာအောင်လုပ်ရမည် ။ မမှန်ကန်တဲ့ entries တွေကိုမဖတ်ဘဲမမှန်ကန်ဘူး ။
Entry ကိုအသုံးပြုပြီးနောက်, သယံဇာတယိုစိမ့်မှုကိုရှောင်ရှားရန်လက်ရှိ 0 င်ခွင့်ကိုပိတ်ရန် Zip_entry_Close () ကိုသင်ခေါ်ဆိုရမည်။
ကွင်းဆက်ပြီးစီးပြီးနောက် zip file အရင်းအမြစ်ကိုပိတ်ရန် Zip_Close () ကိုခေါ်ပါ။
zip ဖိုင်၏သမာဓိနှင့်မှန်ကန်သောပုံစံကိုသေချာပါစေ။
zip ဖိုင်တရားဝင်ရှိမရှိစစ်ဆေးပါ
ဖိုင်တစ်ခုမဖွင့်မီဖိုင်သည်တည်ရှိပြီးဖိုင်ကိုအဖွင့်သို့မဟုတ်ဖိုင်ကိုအကျင့်ပျက်ခြစားမှုကိုရှောင်ရှားရန်သင့်လျော်သောအရွယ်အစားရှိသည်။
သံသရာအရေအတွက်ကန့်သတ်
အကယ်. မသေချာမရေရာဖိုင်ကိုသင်ကြုံတွေ့ရပါက loops အများဆုံးအရေအတွက်ကိုသတ်မှတ်ခြင်းဖြင့်သေနေသောကွင်းဆက်ကိုသင်တားဆီးနိုင်သည်။ ဥပမာအားဖြင့်:
$maxEntries = 1000; // Read Entries ၏အများဆုံးအရေအတွက်
$count = 0;
while (($zipEntry = zip_read($zip)) !== false && $count < $maxEntries) {
// ထုတ်ယူခြင်းကုဒ်
$count++;
}
if ($count >= $maxEntries) {
echo "အသိပေး:အများဆုံး entry ကိုကန့်သတ်ရောက်ရှိသည်,可能存在异常စာချုပ်စာတမ်း。\n";
}
အစားထိုးရန်အခြား PHP တိုးချဲ့မှုကိုသုံးပါ
PHP တွင်ပိုမိုအစွမ်းထက်။ ပိုမိုလုံခြုံသော zip ဖိုင်များလုပ်ကိုင်ရန် Ziparchive class ကိုလည်းပါ 0 င်သည်။ အကယ် . မတည်ငြိမ်သော zip_read ကို သင်ကြုံတွေ့ရပါက Ziparchive ကို အသုံးပြုရန်အကြံပြုသည်။
<?php
$zip = new ZipArchive();
$zipFile = 'http://m66.net/sample.zip';
if ($zip->open($zipFile) === true) {
for ($i = 0; $i < $zip->numFiles; $i++) {
$entryName = $zip->getNameIndex($i);
echo "读取စာချုပ်စာတမ်း条目:$entryName\n";
$stream = $zip->getStream($entryName);
if ($stream) {
$contents = stream_get_contents($stream);
fclose($stream);
// အကြောင်းအရာကိုထုတ်ယူခြင်း
}
}
$zip->close();
} else {
echo "无法ဖွင့်လှစ် ZIP စာချုပ်စာတမ်း";
}
?>
Ziparchive သည် အပြောင်းအလဲအတွက်အတိုင်းအဆုံးမဲ့ကွင်းဆက်ပြ problems နာမရှိပါ။ ၎င်းသည် ပို. ပြောင်းလွယ်ပြင်လွယ်ရှိသည်။
Zip_read () ကို အသုံးပြုသော အခါ,
Entry တစ်ခုစီနှင့် zip ဖိုင်အရင်းအမြစ်တစ်ခုစီကိုမှန်ကန်စွာပိတ်ထားကြောင်းသေချာပါစေ။
အကယ်. အကန့်အသတ်မရှိသောဖိုင်များမှခြွင်းချက်ဖိုင်များမှကာကွယ်ရန် loop entries အရေအတွက်၏အထက်၏အထက်ကန့်သတ်ချက်ကိုသတ်မှတ်နိုင်သည်။
Zip_read အစားပိုမိုခေတ်မီ ဇစ်ရီးဖာ အတန်းအစားကိုအသုံးပြုရန်အကြံပြုသည်။
ဤနည်းလမ်းများမှတစ်ဆင့် PHP ၏ပြ problem နာသည် Zip_read () ကို ထိထိရောက်ရောက်ရှောင်ရှားနိုင်သည့်အခါ PHP သည်အဆုံးမဲ့ကွင်းဆက်များသို့ကျဆင်းသွားသည်။