တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်းဖြစ်ရပ်များတွင်အသုံးပြုသူများသည်ခလုတ်များကိုမကြာခဏနှိပ်ခြင်းသို့မဟုတ်တင်ထားသောပုံစံများကိုမကြာခဏနှိပ်နိုင်သည်။ ၎င်းသည်အချက်အလက်များကိုထပ်ခါတလဲလဲတင်ပြမှုများဖြစ်ပေါ်စေနိုင်သည်။ ဤပြ problem နာကိုထိထိရောက်ရောက်ဖြေရှင်းနိုင်ရန်ကျွန်ုပ်တို့သည် "ဆန့်ကျင်လှုပ်ခါ" ဟုခေါ်သောနည်းပညာကိုသုံးနိုင်သည်။ အသုံးပြုသူများကထပ်ခါတလဲလဲအစပျိုးမှုဖြစ်ရပ်များကြောင့်ဖြစ်ပေါ်လာသောတင်သွင်းမှုပြ issues နာများကိုမိတ္တူပွားခြင်းမှရှောင်ရှားရန်ဤနည်းပညာသည်ကျွန်ုပ်တို့အားကူညီနိုင်သည်။
ဆန့်ကျင်ရေးဆန့်ကျင်ရေးနည်းပညာသည်ဖြစ်ရပ်ပြုပြင်ထုတ်လုပ်သည့်ယန္တရားတစ်ခုဖြစ်သည်။ အချိန်ကာလအတွင်းနောက်တစ်ကြိမ်ထပ်မံပစ်ခတ်ခြင်းမပြုလုပ်သောအခါသက်ဆိုင်ရာစစ်ဆင်ရေးကိုသာပြုလုပ်လိမ့်မည်။ ဒေတာတင်သွင်းမှု၏ဖြစ်ရပ်တွင်ဤနည်းပညာသည်ခလုတ်များကိုနှိပ်ခြင်းသို့မဟုတ်လက်အောက်ခံခြင်းကိုအကြိမ်ကြိမ်နှိပ်သည့်အခါအသုံးပြုသောထပ်ခါတလဲလဲအချက်အလက်တင်ပြချက်ပြ problem နာကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။
PHP တွင် anti-shake status ကို session နှင့် redis ကဲ့သို့သော cache ယန္တရားများမှတစ်ဆင့်မှတ်တမ်းတင်ခြင်းမပြုနိုင်ပါ။ ဤတွင် session ကိုအသုံးပြုပြီးဆန့်ကျင်သောလှုပ်သည့်အပြောင်းအလဲအတွက်နမူနာကုဒ်ဖြစ်သည်။
<?php
// anti-shake အချိန်ကြားကာလ,စက္ကန့်အတွင်းယူနစ်
$debounceInterval = 5;
// cache key name
$cacheKey = 'submit_debounce_key';
// anti-shake အမှတ်အသားများကိုစစ်ဆေးပါ
if (!isset($_SESSION[$cacheKey])) {
// ဒါမတည်ရှိပါက,ဆန့်ကျင်ဆန့်ကျင်အမှတ်အသားကိုသတ်မှတ်ပါ,နှင့်သက်တမ်းကုန်ဆုံးချိန်သတ်မှတ်ထားပါ
$_SESSION[$cacheKey] = 1;
$_SESSION[$cacheKey . '_expire'] = time() + $debounceInterval;
// သက်ဆိုင်ရာစစ်ဆင်ရေးလုပ်ဆောင်ပါ
// TODO: ထုတ်ယူခြင်းပုံစံတင်သွင်းမှုယုတ္တိဗေဒ
// ရှင်းလင်းသောဆန့်ကျင်ရေးအမှတ်အသားများကိုရှင်းလင်းပါ
unset($_SESSION[$cacheKey], $_SESSION[$cacheKey . '_expire']);
} else {
// anti-shake အမှတ်အသားများတည်ရှိသည်,ဒါကြောင့်သက်တမ်းကုန်သွားပြီရှိမရှိဆုံးဖြတ်ပါ
if ($_SESSION[$cacheKey . '_expire'] <= time()) {
// ရှင်းရှင်းလင်းလင်းသက်တမ်းကုန်ဆုံး anti-shake အမှတ်အသားများ,ပြန်လည်တည်ဆောက်
unset($_SESSION[$cacheKey], $_SESSION[$cacheKey . '_expire']);
$_SESSION[$cacheKey] = 1;
$_SESSION[$cacheKey . '_expire'] = time() + $debounceInterval;
// သက်ဆိုင်ရာစစ်ဆင်ရေးလုပ်ဆောင်ပါ
// TODO: ထုတ်ယူခြင်းပုံစံတင်သွင်းမှုယုတ္တိဗေဒ
// ရှင်းလင်းသောဆန့်ကျင်ရေးအမှတ်အသားများကိုရှင်းလင်းပါ
unset($_SESSION[$cacheKey], $_SESSION[$cacheKey . '_expire']);
} else {
// သက်တမ်းကုန်ဆုံးလျှင်,ဆိုလိုသည်မှာဤတောင်းဆိုမှုသည်ထပ်ခါတလဲလဲတင်သွင်းမှုဖြစ်သည်,အဘယ်သူမျှမအပြောင်းအလဲနဲ့ပြုမိနိုင်ပါတယ်,သို့မဟုတ်သက်ဆိုင်ရာချက်ချင်းသတင်းအချက်အလက်ပြန်သွားပါ
echo 'ကျေးဇူးပြုပြီးတင်ပြချက်မလုပ်ပါနှင့်';
exit;
}
}
?>
ဤကျင့် 0 တ်ပါ 0 င်သည့်ဥပမာတွင်ကျွန်ုပ်တို့သည် anti-unti-for anttal `$ di diaboreinterval ကိုပထမ ဦး ဆုံးသတ်မှတ်ပြီး Cache Key Name` $ cacheekey`` ပထမ ဦး ဆုံးအကြိမ်ပုံစံကိုတင်ပြသည့်အခါစနစ်သည် system တွင် anti-shake အမှတ်အသားကိုသတ်မှတ်ပြီးအမှတ်အသားအတွက်သက်တမ်းကုန်ဆုံးချိန်ကိုသတ်မှတ်မည်။ နောက်တစ်ကြိမ်ပုံစံကိုတင်သွင်းသည့်အခါစနစ်သည်အေးဂျင့်ဆန့်ကျင်ရေးအမှတ်အသားတည်ရှိပြီးသက်တမ်းကုန်သွားမည်ကိုစစ်ဆေးလိမ့်မည်။ အကယ်. ၎င်းသည်သက်တမ်းကုန်ဆုံးလျှင်အမှတ်အသားကိုပြန်လည်သတ်မှတ်ပြီးပုံစံတင်သွင်းမှုယုတ္တိဗေဒကိုလုပ်ဆောင်ပါ။ အကယ်. သက်တမ်းကုန်ဆုံးပါက "ထပ်ခါတလဲလဲတင်သွင်းမှုကိုမလုပ်ပါ" ဟူသောအချက်ကိုပြန်ပို့ပါလိမ့်မည်။
လှုပ်ခါခြင်းနည်းပညာဆန့်ကျင်ရေးနည်းပညာသည်တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်းလုပ်ဆောင်ချက်တင်ပြချက်ပြ problem နာကိုထိထိရောက်ရောက်ဖြေရှင်းနိုင်ပြီးကျိုးကြောင်းဆီလျော်သော caching ယန္တရားတစ်ခုသည်စနစ်၏တည်ငြိမ်မှုနှင့်အသုံးပြုသူအတွေ့အကြုံများကိုများစွာတိုးတက်စေနိုင်သည်။ PHP သည်လှုပ်ခါနေသောနည်းပညာကိုအကောင်အထည်ဖော်ရန်လွယ်ကူပြီးအသုံးပြုရလွယ်ကူသောနည်းလမ်းတစ်ခုကိုထောက်ပံ့ပေးပြီး developer များကစီမံကိန်းလိုအပ်ချက်များအရပြောင်းလဲမှုများပြုလုပ်နိုင်သည်။