Network Data Transfer အတွက် PHP ကိုအသုံးပြုသောအခါ ဆံပင်ကောက်ကောက်သည် အလွန်များသောအားဖြင့်အင်အားကြီးမားသောကိရိယာတစ်ခုဖြစ်သည်။ ဖိုင်များကိုဝေးလံခေါင်သီသောဆာဗာသို့ကူးယူခြင်းသို့မဟုတ်ဝေးလံခေါင်သီသောဆာဗာမှဖိုင်များကိုဒေါင်းလုတ်လုပ်ခြင်းရှိမရှိ ကောက်ကောက်သည် ပြောင်းလွယ်ပြင်လွယ်ထိန်းချုပ်နည်းများကိုပေးနိုင်သည်။ ကွန်ယက်ကိုခေတ္တရပ်ဆိုင်းထားခြင်းကဲ့သို့သောအချို့သောစိတျပြသသည့်ယန္တရားများကိုဖြည့်စွက်ရန်သို့မဟုတ်သတ်သတ်မှတ်မှတ်လုံခြုံရေးဖြစ်ရပ်များကိုတုံ့ပြန်ရန်စောင့်ဆိုင်းခြင်း, PHP ၏ ဆံပင်ကောက်ယူခြင်း () function သည်ထိုကဲ့သို့သောစွမ်းရည်များကိုထောက်ပံ့ပေးသည်။
ဆံပင်ကောက်ကောက်သို့မဟုတ်ဒေါင်းလုပ်လုပ်ထားသော data streams များကိုခေတ္တရပ်တန့်ရန် (သို့) ကိုယ်ရေးရာဇဝင်အကျဉ်းကိုခေတ္တရပ်နားရန် (သို့) ပြန်လည်စတင်ရန်အသုံးပြုသည်။ ၎င်းသည်ဒေတာထုတ်လွှင့်ခြင်းလုပ်ငန်းစဉ်များကိုထိန်းချုပ်ခြင်း, အရင်းအမြစ်များကိုချွေတာခြင်း,
function ကိုအဓိပ္ပါယ်ဖွင့်ဆိုချက်ကိုအောက်ပါအတိုင်းဖြစ်သည် -
curl_pause(CurlHandle $handle, int $bitmask): int
$ လက်ကိုင်သည် curl session တစ်ခုနှင့် $ bitmas သည် ခေတ္တနားခြင်း / ပြန်လည်နာလန်ထူရန်အတွက်ထိန်းချုပ်မှုအလံဖြစ်သည်။
အသုံးပြုလေ့ရှိသော $ bitmask စက်ရုံများတွင် -
curlpausausa_recv : ဒေတာကိုလက်ခံရရှိရန်ခေတ္တရပ်နားပါ
curlpousausausa_send : ဒေတာကိုပို့ခြင်း (တင်ပါ) ခေတ္တနားခြင်း
curlpousausause_all : Upload လုပ်ပြီးဒေါင်းလုပ်လုပ်ပါ
curlplouse_cont : UPLOAD ကိုပြန်လည်ရယူပြီး download လုပ်ပါ
အောက်ပါဥပမာသည်ဖိုင်ကိုဒေါင်းလုတ် လုပ်. အချိန်အတန်ကြာပြီးနောက်ပြန်လည်ထူထောင်နိုင်ပုံကိုပြသသည်။
<?php
$ch = curl_init();
// ဒေါင်းလုပ်လုပ်ရန်ဖိုင်လိပ်စာကိုသတ်မှတ်ပါ
curl_setopt($ch, CURLOPT_URL, "https://m66.net/files/testfile.zip");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// ဒေတာကိုလက်ခံရရှိသည့်အခါ callback function ကိုသတ်မှတ်ပါ
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function ($ch, $data) {
static $totalReceived = 0;
$totalReceived += strlen($data);
echo "Received " . $totalReceived . " bytes\n";
if ($totalReceived > 1024 * 100) { // ထက်ပိုပြီး download လုပ်ပါ100KBနောက်မှခေတ္တနားပါ
echo "Pausing download...\n";
curl_pause($ch, CURLPAUSE_RECV);
sleep(5); // လုံခြုံရေးအတည်ပြုချက်သို့မဟုတ်အဖြစ်အပျက်တုံ့ပြန်မှုကိုစောင့်ဆိုင်းတုန့်ခြင်း
echo "Resuming download...\n";
curl_pause($ch, CURLPAUSE_CONT);
}
return strlen($data);
});
curl_exec($ch);
curl_close($ch);
?>
ဤဥပမာတွင် curlopt_writefunction ည့်ခံခြင်းဖြင့်ဒေတာ reception ည့်ခံရန် curl_pause ($ ch, curlpouse_recrecv) ကို Curl_ause ($ ch, currosause_recs_recv -beubcv) ကို Curl_ause ($ ch, curlpire_cont) ဖြင့်ပြန်လည်ပြင်ဆင်ပါ။
အကယ်. ဖိုင်တစ်ခုကိုဆာဗာသို့တင်ရန်ပို့စ်ကိုအသုံးပြုပါက၎င်းကို upload အလယ်၌အလားတူနည်းဖြင့်ပင်ခေတ္တရပ်ဆိုင်းထားနိုင်သည်။
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://m66.net/upload");
curl_setopt($ch, CURLOPT_POST, true);
// ဖိုင်ကိုဖွင့ ်. upload field ကိုသတ်မှတ်ပါ
$file = fopen("testfile.zip", "r");
curl_setopt($ch, CURLOPT_INFILE, $file);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize("testfile.zip"));
// ဒေတာများကိုတင်ခြင်းအတွက် callback function ကိုသတ်မှတ်ပါ
curl_setopt($ch, CURLOPT_READFUNCTION, function ($ch, $fd, $length) {
static $uploaded = 0;
$chunk = fread($fd, $length);
$uploaded += strlen($chunk);
if ($uploaded > 1024 * 50) { // ထက်ပိုပြီးတင်ပါ50KBနောက်မှခေတ္တနားပါ
echo "Pausing upload...\n";
curl_pause($ch, CURLPAUSE_SEND);
sleep(3); // Simulated လုံခြုံရေးယန္တရားအစပျိုးသို့မဟုတ် authentication နှောင့်နှေးမှုများ
echo "Resuming upload...\n";
curl_pause($ch, CURLPAUSE_CONT);
}
return $chunk;
});
curl_exec($ch);
fclose($file);
curl_close($ch);
?>
ဤဥပမာသည် upload လုပ်ထုံးလုပ်နည်းတွင် upload တိုးတက်မှုကိုတက်ကြွစွာထိန်းချုပ်နိုင်စွမ်းကိုပြသသည်။ တိကျသော upload volume တစ်ခုအပြီးတွင်ယာယီပြတ်တောက်မှုများကိုပြုလုပ်ပြီးလုံခြုံရေးယန္တရားသို့မဟုတ်ပြင်ပစနစ်အတွက်တုန့်ပြန်အချိန်ကိုချန်ထားပြီးဆက်လက်တင်ရန်ဆက်လက်လုပ်ဆောင်ခြင်းဖြစ်သည်။
curl_pause ()) ၏စွမ်းရည်နှင့်ပေါင်းစပ်ခြင်း (), ဒေတာထုတ်လွှင့်ခြင်းလုပ်ငန်းစဉ်ကိုပိုမိုလုံခြုံစွာစီမံနိုင်သည်။
authentication process နှင့်ပူးပေါင်းပါ 0 င်ပါ။
ပုံမှန်မဟုတ်သောအသွားအလာနှင့်အတူကိုင်တွယ်ဖြေရှင်းခြင်း - သယံဇာတများစွန့်ပစ်ပစ္စည်းများကိုလျှော့ချရန်အတွက်တွေ့ရှိသောပုံမှန်မဟုတ်သောအပြုအမူသို့မဟုတ်ယာဉ်စည်းကမ်းများကိုခေတ္တရပ်နားပါ။
တိုးတက်သောဂီယာ - တည်ငြိမ်မှုနှင့်အမှားသည်းခံမှုကိုတိုးတက်စေရန်ကြီးမားသောဖိုင်များကိုအသုတ်များဖြင့်သိမ်းဆည်းခြင်း, လွှဲပြောင်းခြင်းနှင့်စစ်ဆေးရန်။
Curl_Pouse () သည်အထူးသဖြင့်မြင့်မားသောရရှိနိုင်သည့်အချက်အလက်ထုတ်လွှင့်ခြင်းစနစ်များတည်ဆောက်သည့်အခါ, ခေတ္တရပ်တန့်ခြင်းနှင့်ပြန်လည်ထူထောင်ရေးလုပ်ငန်းများကိုပြောင်းလွယ်ပြင်လွယ်စွာပေါင်းစပ်ခြင်းဖြင့်ကျွန်ုပ်တို့သည်ပိုမိုလုံခြုံသောဂီယာထိန်းချုပ်မှုကိုအောင်မြင်စွာမရရှိနိုင်ပါ, သို့သော်အရင်းအမြစ်အသုံးပြုမှုကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်သည်။ ဤအင်္ဂါရပ်ကိုကျွမ်းကျင်သော PHP အစီအစဉ်များကိုရှုပ်ထွေးသောကွန်ယက်ပတ်ဝန်းကျင်နှင့်ရင်ဆိုင်နေရသည့်အခါစိန်ခေါ်မှုများကိုပိုမိုအေးဆေးစွာတုန့်ပြန်နိုင်သည်။