ဖိုင်များသည်ကြီးမားသောဖိုင်များကိုတင်ခြင်း၏လုပ်ဆောင်မှုကိုအကောင်အထည်ဖော်သည့်အခါဖိုင်ပြတ်သည့်နည်းစနစ်ဖြစ်သည်။ ၎င်းသည်စူပါကြီးအမြောက်အများကိုသေးငယ်သောအပိုင်းအစများအဖြစ်ခွဲထားပြီးတင်ဆက်မှုနှင့်အောင်မြင်မှုနှုန်းကိုတိုးတက်စေရန်နှင့် Breakpoint Cruntination ကိုတိုးတက်စေရန်အတွက်တစ်ခုအားဖြင့်တင်ဆက်နိုင်သည်။
PHP တွင် CEIL သည် SHARD Upload ၏တွက်ချက်မှုတွင်အရေးကြီးသောအခန်းကဏ် plays မှပါ 0 င်သည်။ ဖိုင်တစ်ခုတင်ရန်လိုအပ်သော shards အရေအတွက်ကိုတွက်ချက်ရန် CEILI () ကို မည်သို့အသုံးပြုရမည်ကိုဤဆောင်းပါးကဤဆောင်းပါးသည်အသေးစိတ်ရှင်းပြပါလိမ့်မည်။
CEIL () သည် PHP တွင်ပါ 0 င်သောသင်္ချာဆိုင်ရာလုပ်ဆောင်မှုဖြစ်သည်။ တစ်နည်းပြောရလျှင်, ဒ decimal မသည်မည်မျှပင်ဖြစ်ပါစေ၎င်းတို့သည်၎င်းကိုအသေးငယ်ဆုံးကိန်းသို့သယ်ဆောင်သွားမည်ဖြစ်သည်။
echo ceil(2.1); // ထုတ်လုပ်ခြင်း 3
echo ceil(5.9); // ထုတ်လုပ်ခြင်း 6
$ funfeize bytes အရွယ်အစားရှိသောဖိုင်တစ်ဖိုင်နှင့်အချပ်တစ်ချက်လျှင်ဖိုင်ငယ်များဖြင့်ဖိုင်တစ်ခုတင်လိုသည်ဆိုပါစို့။ စုစုပေါင်း Shards အရေအတွက်ကိုအောက်ပါပုံသေနည်းဖြင့်တွက်ချက်နိုင်သည်။
Shards အရေအတွက် = အထက်သို့ ( ဖိုင်အရွယ်အစား / shards အရွယ်အစား )
ဤသည် ceil () function ကို၏အတိအကျရည်ရွယ်ချက်ဖြစ်ပါတယ်။
ဖိုင်တင်ခြင်းဖိုင်မည်မျှရှိသည်ကိုတွက်ချက်ရန်ရိုးရှင်းသော PHP Code Snippet သည်။
<?php
$fileSize = 10485760; // ဖိုင်အရွယ်အစား为 10MB(တခု:ဒရယ်)
$chunkSize = 1048576; // တစ်ခုချင်းစီကိုအပိုင်းအစ 1MB
$totalChunks = ceil($fileSize / $chunkSize);
echo "upload လုပ်ခံရဖို့ shards စုစုပေါင်းအရေအတွက်ဖြစ်ပါတယ်: $totalChunks";
?>
output ကိုဖြစ်လိမ့်မည်:
upload လုပ်ခံရဖို့ shards စုစုပေါင်းအရေအတွက်ဖြစ်ပါတယ်: 10
ဆိုလိုသည်မှာ 10MB ဖိုင်များ, 1MB Piet ကို 1MB (10 ချက်) အတိအကျလိုအပ်သည်။
ရှေ့ဆုံးအဆုံးသည် Set Shard Size ကို Javascript မှတစ်ဆင့် Set Shard Size အရသိရသည်။ တစ်ကြိမ်တွင်တစ်ကြိမ်တိုင်တင်သည့်အခါတိုင်းများသောအားဖြင့်အောက်ပါ parameters များနှင့်အတူပါရှိသည်။
လက်ရှိ Shard ၏အညွှန်းကိန်း (ဥပမာ - chunk 1, chunk 2)
တစ်ခုချင်းစီကိုအပိုင်းအစ၏အရွယ်အစား
( MD5 သို့မဟုတ် UUID ကို သုံးခြင်းကဲ့သို့သောထူးခြားသောအမှတ်အသားဖိုင်ကိုဖိုင်တင်ပါ)
Backend (PHP ကိုအသုံးပြုခြင်း) သည် Shard တစ်ခုစီကိုလက်ခံပြီး Shards အားလုံး upload လုပ်သည်အထိ၎င်းကိုခေတ္တသိုလှောင်ထားပြီး,
<?php
$index = $_POST['chunkIndex']; // လက်ရှိ Shard အညွှန်းကိန်း
$total = $_POST['totalChunks']; // shards စုစုပေါင်းအရေအတွက်
$fileId = $_POST['fileId']; // ထူးခြားသောအမှတ်အသားဖိုင်
$chunk = $_FILES['file']['tmp_name'];
$chunkDir = __DIR__ . "/chunks/$fileId";
if (!is_dir($chunkDir)) {
mkdir($chunkDir, 0777, true);
}
move_uploaded_file($chunk, "$chunkDir/chunk_$index");
if ($index == $total - 1) {
// အားလုံး shards uploaded ပါပြီ,ပေါင်းစည်းစတင်ပါ
$finalFile = fopen(__DIR__ . "/uploads/$fileId", 'ab');
for ($i = 0; $i < $total; $i++) {
$chunkPath = "$chunkDir/chunk_$i";
fwrite($finalFile, file_get_contents($chunkPath));
}
fclose($finalFile);
// ယာယီ Shards ကိုဖျက်ပစ်ပါ
array_map('unlink', glob("$chunkDir/*"));
rmdir($chunkDir);
echo "ဖိုင်တင်ခြင်းနှင့်အောင်မြင်စွာပေါင်းစည်းပါ!";
}
?>
အမှန်တကယ်ဖြန့်ကျက်မှုတွင် https://upload.m66.net ကဲ့သို့သောလွတ်လပ်သော 0 န်ဆောင်မှုဒိုမိန်းအမည်တွင် upload interface ကိုဖြန့်ဖြူးပေးနိုင်သည်။
Front-end upload တောင်းဆိုမှုဥပမာ:
fetch('https://upload.m66.net/upload.php', {
method: 'POST',
body: formData
});
Backend PHP မျက်နှာပြင်သည် Sundil () သည် တင်သည့်သတင်းအချက်အလက်ကိုအတည်ပြုရန် SHINTION သတင်းအချက်အလက်များကို အခြေခံ. ခေါ်ဆိုနိုင်သည့်သတင်းအချက်အလက်များကိုပြုလုပ်နိုင်သည်။
$expectedChunks = ceil($fileSize / $chunkSize);
if ($uploadedChunks == $expectedChunks) {
// ဖိုင်များကိုပေါင်းစည်းပါ
}
CEILI () function ကိုအသုံးပြုခြင်းသည် Shard Upload ရှိ Shards အရေအတွက်ကိုရေတွက်ခြင်း၏ပြ problem နာကိုအလွယ်တကူကိုင်တွယ်နိုင်သည်။ PHP ၏ built-in function များကို အသုံးပြု. ဖိုင်တွဲလုပ်ငန်းလည်ပတ်မှုများကိုဆင်ခြင်တုံတရားဖြင့်အသုံးပြုခြင်းဖြင့်ကြီးမားသောဖိုင်များအားအလျင်အမြန်ဖြည့်စွက်ခြင်းနှင့်ပေါင်းစည်းခြင်းများကိုထိထိရောက်ရောက်။ သင်ဖိုင်သိုလှောင်မှုစနစ်တစ်ခုကိုတည်ဆောက်နေသည်ဖြစ်စေ,