လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> FNCENTCSV ရှိ File Pnower စီမံခန့်ခွဲမှုစွမ်းရည်များ,

FNCENTCSV ရှိ File Pnower စီမံခန့်ခွဲမှုစွမ်းရည်များ,

gitbox 2025-09-09

CSV ဖိုင်များကို PHP ကိုအသုံးပြုသောအခါ FNGCSV () သည် CSV ဖိုင်များကိုမျဉ်းကြောင်းဖြင့်ဖတ်နိုင်ပြီးအချက်အလက်များကိုစာတိုတစ်ခုစီကိုဖတ်နိုင်သည်။ သို့သော် FNGCTSV () သည် အချက်အလက်များကိုထပ်ခါတလဲလဲဖတ်နိုင်ပြီးကြီးမားသောဖိုင်များကိုကိုင်တွယ်သည့်အခါဖိုင်များထောက်ပြသည့်ဖိုင်ညွှန်ပြခြင်းဖြင့်မတော်တဆစီမံခန့်ခွဲနိုင်ပါကအချို့သောလိုင်းများကိုကျော်သွားပါ။ ဤပြ problems နာများကိုရှောင်ရှားရန်ကျွန်ုပ်တို့သည်ဖိုင် pointer စီမံခန့်ခွဲမှုစွမ်းရည်ကိုကျွမ်းကျင်ရန်လိုအပ်သည်။ ဤဆောင်းပါးသည်အချက်အလက်များကိုထပ်ခါတလဲလဲဖတ်ရှုခြင်းကိုမည်သို့ထိထိရောက်ရောက်ရှောင်ရှားနိုင်ပြီးအတန်းတိုင်းဖတ်ရန်မှန်ကန်ကြောင်းသေချာစေရန်။

1 ။ File Pointers နှင့် FgetCSV ၏အလုပ်လုပ်နိယာမကိုနားလည်ပါ။

PHP တွင်လက်ရှိစာဖတ်ခြင်းသို့မဟုတ်ရေးသားထားသောဖိုင်၏တည်နေရာကိုမှတ်သားရန်ဖိုင်ထောက်လှမ်းရေးကိုအသုံးပြုသည်။ ဖိုင်တစ်ခုကိုဖွင့်ပြီး FetGetCSV () function ကိုသုံးသောအခါဒေတာများကိုဖတ်ရန် functcsv () function ကိုအသုံးပြုသောအခါဖိုင်ညွှန်းကိန်းတစ်ခုချင်းစီကိုဖတ်ရန်ခွဲစိတ်မှုတစ်ခုနှင့်တစ်ခုရွေ့လျားလိမ့်မည်။ ဖိုင်ကိုဖတ်သည့်အခါ Pointer သည်ဖိုင်၏အဆုံးတွင်ရှိနေမည်။

Fgetcsv () ကိုခေါ်သည့်အခါတိုင်း၎င်းသည်လက်ရှိအနေအထားမှ CSV ဒေတာများကိုစတင်ဖတ်ရှုပြီး pointer ကိုတတန်းကိုလှိမ့်စေသည်။ အကယ်. ကျွန်ုပ်တို့သည်ဖိုင်များကိုမတော်တဆစီမံခန့်ခွဲမှုများကိုမတော်တဆအသုံးချပါကအောက်ပါအခြေအနေများဖြစ်ပေါ်နိုင်သည်။

  • Read Pud : ပရိုဂရမ်သည်လုပ်ငန်းစဉ်အချက်အလက်များကိုပြန်လည်ဖတ်ရှုနိုင်သည်။

  • Data skip အချက်အလက် : ဖိုင်ညွှန်းကိန်းသည်အလွန်အကျွံခုန်ချလိုက်သည်။ အတန်းအချို့ကိုလွဲချော်စေသည်။

2 ။ FTell () နှင့် FSEEK ကို သုံးပါ

သင်ဖတ်သည့်အခါတိုင်းဖိုင်ညွှန်းကိန်းကိုမှန်ကန်စွာနေရာချထားရန်သေချာစေရန်, သင်သည်အသေးစိတ်ထိန်းချုပ်မှုပြုလုပ်ရန် FTell () နှင့် FSEEK) ကိုသုံးနိုင်သည်။

  • FTell () - လက်ရှိဖိုင်ညွှန်ပြနေရာကိုရယူပါ။

  • FESEEK () - ခွင့်ပြုထားသော offset ပေါ် မူတည်. ဖိုင်ကိုညွှန်ပြသည့်အနေအထားသို့ရွှေ့ပါ။

ဤရွေ့ကားလုပ်ဆောင်ချက်နှစ်ခုသည်ကျွန်ုပ်တို့အားသတ်သတ်မှတ်မှတ်အခြေအနေများတွင်ဖိုင်ထောက်လှမ်းရေးကိုပြောင်းရွှေ့ရန်နှင့်ထပ်တူသို့မဟုတ်ပျောက်ဆုံးနေသောအချက်အလက်များကိုဖတ်ရှုခြင်းကိုရှောင်ရှားနိုင်သည်။

နမူနာကုဒ်:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">'data.csv'</span></span><span>, </span><span><span class="hljs-string">'r'</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$file</span></span><span>) {
    </span><span><span class="hljs-variable">$lineNumber</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>;
    </span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$data</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fgetcsv</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>)) !== </span><span><span class="hljs-literal">FALSE</span></span><span>) {
        </span><span><span class="hljs-variable">$lineNumber</span></span><span>++;
        
        </span><span><span class="hljs-comment">// လက်ရှိ pointer အနေအထားကိုရယူပါ</span></span><span>
        </span><span><span class="hljs-variable">$position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftell</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
        
        </span><span><span class="hljs-comment">// လက်ရှိလိုင်း၏ contents ပုံနှိပ်ပါ</span></span><span>
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Line <span class="hljs-subst">$lineNumber</span></span></span><span>: " . </span><span><span class="hljs-title function_ invoke__">implode</span></span><span>(</span><span><span class="hljs-string">", "</span></span><span>, </span><span><span class="hljs-variable">$data</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
        
        </span><span><span class="hljs-comment">// အချို့ကိစ္စများတွင်(ဥပမာအားဖြင့်အချို့သောလိုင်းများကိုကျော်သွားပါ)အသုံးပြုနိုင်fseekသတ်မှတ်ထားသောတည်နေရာမှအနေအထား</span></span><span>
        </span><span><span class="hljs-comment">// fseek($file, $position + 100);  // နမူနာ:ခုန်ကျော်သည်100နေပြည်တော်</span></span><span>
    }

    </span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

3 ။ FgetCSV ကို သုံးသောအခါထပ်ခါတလဲလဲဖတ်ရှုခြင်းကိုရှောင်ရှားရန်သိကောင်းစရာများ

CSV ဖိုင်များကိုကွင်းဆက်တစ်ခုတွင်ဖတ်သည့်အခါအောက်ပါအခြေအနေများနှင့်ကျွန်ုပ်တို့များသောအားဖြင့်တွေ့ရသည်။ ထပ်ခါတလဲလဲစာဖတ်ခြင်းကိုရှောင်ရှားရန်ကျွန်ုပ်တို့သက်ဆိုင်ရာအစီအမံများကိုယူနိုင်သည်။

3.1 ဖိုင်၏အချက်အလက်အချို့ကိုကြိုတင်ဖတ်ပါ

ဖိုင်ခေါင်းစဉ်ကိုရယူခြင်းသို့မဟုတ်အချို့သောအခြေအနေများကိုစစ်ဆေးခြင်းကဲ့သို့သောအချက်အလက်များကိုမဖတ်မီဖိုင်တွင်ကြိုတင်မသုံးရန်လိုအပ်ပါကဖိုင်ညွှန်ပြချက်ကိုပထမ ဦး ဆုံးဖတ်ရှုခြင်းအားဖြင့်ဖိုင်ညွှန်းကိုရှေ့သို့ရွေ့နိုင်သည်။

3.2 စာဖတ်စဉ်ကာလအတွင်းအချက်အလက်များကိုလုပ်ဆောင်သည့်အခါမှတ်တမ်းတင်ပါ

CSV ဖိုင်များကိုပြုပြင်သည့်အခါဖိုင်ညွှန်ပြသည့်နေရာပေါ်တွင် အခြေခံ. အချို့သောအချက်အလက်များကိုဖတ်ရှုခြင်းရှိမရှိစစ်ဆေးနိုင်သည်။ ဥပမာအားဖြင့် FTell () function ၏ return-function ကိုပြန်ပို့ခြင်းသို့မဟုတ်အချို့သောမမှန်ကန်သောဒေတာများကိုကျော်ဖြတ်ရန်လိုအပ်ခြင်းရှိ,

3.3 တူညီသောအကြောင်းအရာများကို cache ယန္တရားမှတဆင့်အကြိမ်ကြိမ်ဖတ်ရှုခြင်းကိုရှောင်ပါ

အကယ်. CSV ဖိုင်ရှိအကြောင်းအရာအချို့ကိုအကြိမ်ပေါင်းများစွာဖတ်နိုင်ပါက (ခေါင်းစဉ် data data or Rivs ကဲ့သို့သော) ကိုဖတ်ရှုနိုင်လျှင်, မလိုအပ်သောထပ်ခါတလဲလဲဖတ်ရှုခြင်းကိုရှောင်ရှားရန်ဒေတာများကိုယာယီသိမ်းဆည်းရန် cache ကိုသုံးနိုင်သည်။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">'data.csv'</span></span><span>, </span><span><span class="hljs-string">'r'</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$file</span></span><span>) {
    </span><span><span class="hljs-variable">$cache</span></span><span> = [];
    </span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$data</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fgetcsv</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>)) !== </span><span><span class="hljs-literal">FALSE</span></span><span>) {
        </span><span><span class="hljs-variable">$key</span></span><span> = </span><span><span class="hljs-variable">$data</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>];  </span><span><span class="hljs-comment">// ပထမကော်လံ၏တန်ဖိုးကို အခြေခံ. လုပ်ငန်းများ၌ပြုလုပ်ထားခြင်းရှိမရှိကိုကျွန်ုပ်တို့ဆုံးဖြတ်သည်ဆိုပါစို့။</span></span><span>
        </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">in_array</span></span><span>(</span><span><span class="hljs-variable">$key</span></span><span>, </span><span><span class="hljs-variable">$cache</span></span><span>)) {
            </span><span><span class="hljs-comment">// အချက်အလက်များကိုထုတ်ယူခြင်း</span></span><span>
            </span><span><span class="hljs-variable">$cache</span></span><span>[] = </span><span><span class="hljs-variable">$key</span></span><span>;
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">implode</span></span><span>(</span><span><span class="hljs-string">", "</span></span><span>, </span><span><span class="hljs-variable">$data</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
        }
    }

    </span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

4 ။ ဖိုင်၏အဆုံးပြီးနောက်မှန်ကန်သောအပြောင်းအလဲနဲ့

ဖိုင်ကိုဖတ်သည့်အခါဖိုင်ညွှန်ပြသည့်နေရာကိုအထူးဂရုပြုရန်လိုအပ်သည်။ အချို့ဖြစ်ရပ်များတွင် FNGCSV () သည် ဖိုင်အပြီးတွင်အချည်းနှီးသောလိုင်းများသို့မဟုတ်သတ်သတ်မှတ်မှတ်ဇာတ်ကောင်များကြောင့်ထွက်ပြေးတိမ်းရှောင်နေပြီး မမှန်ကန် တော့ပါ။ ဤအချိန်တွင်ဖိုင်၏အဆုံးသည် ဆုံးကိုပြန်အမှတ်အသားပြုရန် FITCTCSV () ကိုမှီခိုခြင်းရှိမရှိစစ်ဆေးရန် FEF () function ကိုသုံးနိုင်သည်။

5 ။ အကျဉ်းချုပ်

FgetCSV () သည်အစွမ်းထက်သော function တစ်ခုဖြစ်သည်။ FTell () နှင့် FCEEK ကဲ့သို့သောလုပ်ဆောင်ချက်များကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ဖိုင်ညွှန်ပြခြင်း၏အနေအထားကိုအတိအကျထိန်းချုပ်နိုင်သည်။ ထို့အပြင် cache နှင့်ယုတ္တိဆိုင်ရာတရားစီရင်ခြင်းကိုဆင်ခြင်တုံတရားနှင့်ယုတ္တိဆိုင်ရာတရားစီရင်ခြင်းကိုပိုမိုကောင်းမွန်စေပြီးမလိုအပ်သောအရင်းအမြစ်သုံးစွဲမှုကိုလျှော့ချနိုင်သည်။ ဤဆောင်းပါး၏ကျွမ်းကျင်မှုများမှတဆင့် fgetcsv () အသုံးပြုခြင်းကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်ပြီးပိုမိုရှုပ်ထွေးသော CSV ဖိုင်များကိုကိုင်တွယ်နိုင်သည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။