လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP မှကြီးမားသောဖိုင်များကိုဒေါင်းလုတ်လုပ်သည့်အခါသာမန်အမှားများနှင့်ဖြေရှင်းနည်းများ

PHP မှကြီးမားသောဖိုင်များကိုဒေါင်းလုတ်လုပ်သည့်အခါသာမန်အမှားများနှင့်ဖြေရှင်းနည်းများ

gitbox 2025-06-25

1 ။ နိဒါန်း

File Downloads အတွက် PHP ကိုအသုံးပြုသောအခါသင်သည်အမှားအယွင်းများစွာကြုံတွေ့ရနိုင်သည်။ မှတ်ဉာဏ်ကန့်သတ်ချက်များ, ကွပ်မျက်ချိန်အချိန်ကုန်ခြင်း, ကွန်ယက်ချိတ်ဆက်မှုပြတ်တောက်ခြင်း,

2 ။ မှတ်ဉာဏ်ကန့်သတ်အမှား

ပုံမှန်အားဖြင့် PHP သည်မှတ်ဉာဏ်အသုံးပြုမှုကိုကန့်သတ်ထားသည်။ ဒေါင်းလုပ်လုပ်ထားသောဖိုင်သည်အလွန်ကြီးလွန်းသောအခါမှတ်ဉာဏ်ကန့်သတ်ချက်ကိုကျော်လွန်နိုင်သည်။

2.1 မှတ်ဉာဏ်ကန့်သတ်တိုးမြှင့်

PHP.INI configuration file ထဲတွင် memory_limit ပြုပြင်မွမ်းမံပါ

3 ။ အမှားအယွင်းအချိန်မှအမှား

ကြီးမားသောဖိုင်များကို download လုပ်ရန်အချိန်ကြာမြင့်စွာပြုလုပ်နိုင်ပြီးကွပ်မျက်မှုသည် PHP ၏မူလကန့်သတ်ချက်ထက်ကျော်လွန်ပါကအချိန်ကုန်အမှားပေါ်ပေါက်လာလိမ့်မည်။

3.1 ကွပ်မျက်အချိန်ကန့်သတ်ချက်ကိုတိုးမြှင့်ပါ

PHP.ini ရှိ max_execution_time_time item ကိုပြုပြင်မွမ်းမံခြင်းဖြင့် PHP ၏အများဆုံးကွပ်မျက်အချိန်ကိုတိုးမြှင့်နိုင်သည်။

 
ini_set('max_execution_time', 3600); // အဖြစ်သတ်မှတ်1နာရီ
    

3.2 Block Download

Execute Timeout ၏ပြ problem နာကိုဖြေရှင်းရန်ဖိုင်တစ်ခုလုံးကိုဒေါင်းလုပ်ဆွဲရန်ဖိုင်ကြီးများကိုခွဲထုတ်ရန်,

 
$filename = 'path/to/bigfile.mp4';
$chunkSize = 1024 * 1024; // သင် download လုပ်တိုင်း1MB
$handle = fopen($filename, 'rb');
while (!feof($handle)) {
    echo fread($handle, $chunkSize);
    flush();
    ob_flush();
}
fclose($handle);
    

4 ။ ကွန်ယက်ဆက်သွယ်မှုကြားဖြတ်အမှား

ကြီးမားသောဖိုင်များကိုဒေါင်းလုပ်လုပ်စဉ်အတွင်းကွန်ယက်ပြတ်တောက်မှုများသည် download ပျက်ကွက်စေနိုင်သည်။

4.1 breakpoint စဉ်ဆက်မပြတ်ဂီယာ

Breakpoint စဉ်ဆက်မပြတ် transfery နည်းပညာကိုအသုံးပြုခြင်းဖြင့်ဒေါင်းလုပ်လုပ်ပြီးအနှောင့်အယှက်မဖြစ်သည့်နောက်,

 
$filename = 'path/to/bigfile.mp4';
$handle = fopen($filename, 'rb');
if (isset($_SERVER['HTTP_RANGE'])) {
    fseek($handle, intval(substr($_SERVER['HTTP_RANGE'], 6)));
}
while (!feof($handle)) {
    echo fread($handle, $chunkSize);
    flush();
    ob_flush();
}
fclose($handle);
    

5 ။ Client-Related အမှားအယွင်းများ

တစ်ခါတစ်ရံတွင် client's browser (သို့) download မန်နေဂျာသည် download download ကိုကျရှုံးစေနိုင်သည်။

5.1 client browser ပြ issues နာများ

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

5.2 download မန်နေဂျာပြ issues နာများကို download လုပ်ပါ

အချို့သော download မန်နေဂျာများသည်ဖိုင်တစ်ခု၏အများဆုံး download အရွယ်အစားကိုကန့်သတ်ထားနိုင်သည်။ download manager ကို disable လုပ်ရန်သို့မဟုတ်အခြားမန်နေဂျာကိုအစားထိုးရန်အကြံပြုသည်။

6 ။ နိဂုံးချုပ်

PHP တွင်ဖိုင်ကြီးများကိုဒေါင်းလုပ်ဆွဲသည့်အခါ, သင်သည်မှတ်ဉာဏ်ကန့်သတ်ချက်များ, ကွပ်မျက်ချိန်အချိန်ကုန်ခြင်း, မှတ်ဥာဏ်ကန့်သတ်ချက်များတိုးပွားလာခြင်းအားဖြင့်ကွပ်မျက်ခြင်းအချိန်တိုးလာခြင်း,