E-Commerce စက်မှုလုပ်ငန်းလျင်မြန်စွာဖွံ့ဖြိုးတိုးတက်မှုနှင့်အတူ Flash SALLINE လှုပ်ရှားမှုများသည်အရောင်းမြှင့်တင်ရန်နှင့်အသုံးပြုသူကပ်လျက်မြှင့်တင်ရန်အဓိကနည်းလမ်းများဖြစ်လာသည်။ သို့သော် Flash ကိုရောင်းဝယ်ခြင်းလုပ်ငန်းများတွင်စနစ်သည်တစ်ချိန်တည်းတွင်လောင်းသောသုံးစွဲသူအမြောက်အများကိုမကြာခဏ 0 င်ရောက်နေသည့်ပြ problem နာကိုမကြာခဏရင်ဆိုင်နေရသည်။ ဤပြ problem နာကိုဖြေရှင်းရန်စာကြည့်တိုက်နှင့်ခွဲထွက်ဇယားများအသုံးပြုခြင်းနှင့်ဖြန့်ဖြူးသောငွေပေးငွေယူသည့်ငွေပေးငွေယူသည့်ငွေပေးချေမှုပြုခြင်းသည်စနစ်တည်ငြိမ်မှုနှင့်စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်အရေးကြီးသောနည်းလမ်းတစ်ခုဖြစ်လာသည်။
ရိုးရာရင်းမြစ်ဒေတာဘေ့စ်များတွင်စနစ်၏စကေးနိုင်မှုနှင့်စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်အချက်အလက်များကိုဒေတာဘေ့စ်နှင့်စားပွဲများကိုခွဲဝေပေးခြင်းဖြင့်ဒေတာဘေ့စ်များနှင့်စားပွဲများသို့လူစုခွဲနိုင်သည်။
အသုံးပြုသူ ID, ထုတ်ကုန် ID သို့မဟုတ်အချိန်စသဖြင့်အချို့သောစည်းမျဉ်းစည်းကမ်းများအရဒေတာကွဲပြားမှုများကိုကွဲပြားခြားနားသောဒေတာဘေ့စ်များသို့ခွဲခြားရန်ရည်ညွှန်းသည်။
အချို့သောစည်းမျဉ်းစည်းကမ်းများအရစားပွဲဝိုင်းခွဲစိတ်မှုတစ်ခုစီတွင်စားပွဲတစ်ခုစီသို့ဖြတ်သန်းရန်ဖြစ်သည်။ ဘုံခွဲခြင်းနည်းလမ်းများသည်ဒေတာ၏ hash တန်ဖိုးသို့မဟုတ် timestamp ဖြင့်ခွဲထုတ်ပါ။ Split စားပွဲများကိုကွဲပြားခြားနားသောဒေတာဘေ့စ်များတွင်ဖြန့်ဝေခြင်း,
Sub-store နှင့်စားပွဲများ၏ဗိသုကာလက်အောက်တွင်ဒေတာရှေ့နောက်ညီညွတ်မှုသည်အထူးသဖြင့်စစ်ဆင်ရေးများကိုရေးသည့်အခါအထူးအရေးကြီးသည်။ ဒေတာထပ်တူပြုခြင်းနှင့်ရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန်,
ဖြန့်ဝေထားသောစနစ်များတွင်ဒေတာဘေ့စ်မျိုးစုံသို့မဟုတ် 0 န်ဆောင်မှုမျိုးစုံအကြားဒေတာလုပ်ငန်းများပါ 0 င်သည့်အခါဖြန့်ဝေထားသောငွေပေးငွေယူသည့်နည်းလမ်းများကိုမကြာခဏအသုံးပြုလေ့ရှိသည်။ ၎င်းတို့အနက်အဆင့်နှစ်ဆင့်တင်ပြချက် (2PC) သည်အသုံးအများဆုံးနည်းပညာတစ်ခုဖြစ်သည်။
အဆင့်နှစ်ဆင့်တင်ပြမှုသဘောတူညီချက်တွင်မဲပေးခြင်းအဆင့်နှင့်ကွပ်မျက်အဆင့်တွင်ပါဝင်သည်။
1 ။ မဲပေးမှုအဆင့် - ညှိနှိုင်းရေးမှူးကသူသည်ငွေပေးချေမှုလုပ်ငန်းများကိုလုပ်ဆောင်ရန်အဆင်သင့်ဖြစ်နေပြီလားဟုမေးမြန်းသူများအားတောင်းဆိုသည်။ သင်တန်းသားများအဆင်သင့်ပြည်နယ်သို့ပြန်သွားရန်။
2 ။ Execution Phase - ညှိနှိုင်းရေးမှူးမှသင်တန်းသားများမှတုံ့ပြန်ချက်များအပေါ်အခြေခံပြီးငွေပေးချေမှုကို အခြေခံ. ငွေပေးချေမှုကိုတင်ပြခြင်းသို့မဟုတ်ရပ်ဆိုင်းခြင်းရှိမရှိဆုံးဖြတ်သည်။ အားလုံးပါ 0 င်သူများ၏တုံ့ပြန်ချက်အဆင်သင့်ဖြစ်လျှင်ညှိနှိုင်းရေးမှူးသည်တင်သွင်းမှုတောင်းဆိုမှုကိုစတင်ခဲ့သည်။ ပါ 0 င်သူများ၏တုံ့ပြန်ချက်များကိုဖျက်သိမ်းလျှင်ငွေပေးငွေယူကိုအဆုံးသတ်လိမ့်မည်။
အချို့သောအခြေအနေများတွင်မက်ဆေ့ခ်ျများတန်းစီများသည်ဘုံဖြန့်ဝေထားသောငွေပေးငွေယူသည့်နည်းလမ်းဖြစ်သည်။ ဒေတာဘေ့စ်စစ်ဆင်ရေးများကို atannchronous messages များအဖြစ်ပြောင်းလဲခြင်းအားဖြင့်သင်သည်မက်ဆေ့ခ်ျကိုတန်းစီရန် allynchronous processing အတွက်အသုံးပြုနိုင်ပြီးစနစ်၏ပမာဏနှင့်အမှားခံနိုင်ရည်ရှိခြင်းကိုပြုလုပ်နိုင်သည်။ မက်ဆေ့ခ်ျကိုတန်းစီနေသည့်အတိုင်းဒေတာရှေ့နောက်ညီညွတ်ရေးလည်ပတ်မှုများကိုစနစ်များစွာတွင်အောင်မြင်နိုင်သည်။
PHP တွင်ဖြန့်ဝေသောအရောင်းအ 0 ယ်များကိုမည်သို့အကောင်အထည်ဖော်ရမည်ဟူသောရိုးရှင်းသောဥပမာဖြစ်သည်။
<?php
// ဒေတာဘေ့စ်ကိုဆက်သွယ်ပါ
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', 'password');
// ပါဝင်သူတုံ့ပြန်ချက်များအတွက်အဆင်သင့်ပြည်နယ်သို့ function ကိုထည့်ပါ
function prepare($pdo, $transaction_id, $participant_id) {
$stmt = $pdo->prepare('INSERT INTO participants(transaction_id, participant_id, status) VALUES(?, ?, "ready")');
$stmt->execute([$transaction_id, $participant_id]);
}
// ငွေပေးငွေယူကျူးလွန်မှုများအတွက်လုပ်ဆောင်ချက်များကို
function commit($pdo, $transaction_id) {
$stmt = $pdo->prepare('UPDATE participants SET status="commit" WHERE transaction_id=?');
$stmt->execute([$transaction_id]);
}
// အရောင်းအ 0 ယ်များကိုအဆုံးသတ်သောလုပ်ဆောင်ချက်များကို
function abort($pdo, $transaction_id) {
$stmt = $pdo->prepare('UPDATE participants SET status="abort" WHERE transaction_id=?');
$stmt->execute([$transaction_id]);
}
// ပါဝင်သူ status ကိုစစ်ဆေးသောလုပ်ဆောင်ချက်များကို
function checkParticipants($pdo, $transaction_id) {
$stmt = $pdo->prepare('SELECT COUNT(*) FROM participants WHERE transaction_id=? AND status="ready"');
$stmt->execute([$transaction_id]);
$count = $stmt->fetchColumn();
return $count === 0;
}
// Two-Page တင်ပြချက်ဖြစ်စဉ်ကို
function twoPhaseCommit($pdo, $transaction_id) {
// မဲပေးအဆင့်
$stmt = $pdo->prepare('SELECT participant_id FROM participants WHERE transaction_id=?');
$stmt->execute([$transaction_id]);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
sendVoteRequest($row['participant_id']);
}
// Execution Phase
if (checkParticipants($pdo, $transaction_id)) {
sendCommit($transaction_id);
commit($pdo, $transaction_id);
} else {
sendAbort($transaction_id);
abort($pdo, $transaction_id);
}
}
?>
စာကြည့်တိုက်နှင့်စားပွဲတင်ဌာနခွဲနှင့်ဖြန့်ဝေသောငွေပေးငွေယူသည့်လုပ်ငန်းစဉ်အားဖြင့် PHP Flash ရောင်းချမှုစနစ်သည်စနစ်စွမ်းဆောင်ရည်နှင့်တည်ငြိမ်မှုကိုထိထိရောက်ရောက်တိုးတက်အောင်လုပ်ပြီးတစ်ပြိုင်နက်တည်းအသုံးပြုသူတောင်းဆိုမှုများကိုထိရောက်စွာတိုးတက်စေနိုင်သည်။ ကျိုးကြောင်းဆီလျော်သောဗိသုကာဒီဇိုင်းကြောင့် Flash Society သည်အသုံးပြုသူများကိုပိုမိုကောင်းမွန်သောအတွေ့အကြုံရှိသူများကိုပိုမိုအတွေ့အကြုံရှိစေရန်နှင့်စနစ်ပျက်ပြားခြင်းသို့မဟုတ်ဒေတာရှေ့နောက်မညီမှုများမှရှောင်ရှားနိုင်သည်။