ငွေပေးငွေယူအထီးကျန်မှုအဆင့်သည်ငွေပေးငွေယူကွပ်မျက်ခံရသည့်အခါအခြားအရောင်းအ 0 ယ်များ၏အချက်အလက်ပြုပြင်ခြင်းများကိုသတ်မှတ်သည်။ ကွဲပြားခြားနားသောအထီးကျန်ခြင်းအဆင့်ဆင့်သည်ကွဲပြားခြားနားသောဒေတာအထီးကျန်မှုအမျိုးမျိုးကိုဖော်ပြသည်။
uncommitted ကိုဖတ်ပါ
ငွေပေးငွေယူတစ်ခုမှမကျူးလွန်သောအချက်အလက်များကိုဖတ်ရန်ငွေပေးချေမှုတစ်ခုအားဖတ်ရှုခွင့်ပြုခြင်းသည်ညစ်ပတ်စာဖတ်ခြင်းကိုဖြစ်စေနိုင်သည်။
ကတိကဝတ်ကိုဖတ်ပါ
အရောင်းအ 0 ယ်တစ်ခုသာငွေပေးချေမှုကိုသာဖတ်ရှုခွင့်ပြုရန်,
ထပ်ခါတလဲလဲဖတ်ပါ
ငွေပေးငွေယူတစ်ခုရှိမေးမြန်းချက်အားလုံးသည်တူညီသောအချက်အလက်များကိုပြန်ပို့ပါ။ ထပ်ခါတလဲလဲမဟုတ်သောစာဖတ်ခြင်းကိုရှောင်ကြဉ်ပါ။
မေျာက် serializable
အရောင်းအ 0 ယ်အရောင်းအ 0 ယ်များကို 0 န်ဆောင်မှုပေးရန်,
PDO သည်အရောင်းအ 0 ယ်များမစတင်မီငွေပေးငွေယူအထီးကျန်အဆင့်များကိုသတ်မှတ်ရန်ခွင့်ပြုသည်။ ဤစစ်ဆင်ရေးကိုများသောအားဖြင့် SQL ထုတ်ပြန်ချက်များမှပြုလုပ်လေ့ရှိသည်။ တိကျသောနည်းလမ်းမှာ PDE :: GANGINTRANSANSESSAND ကို မခေါ်မီလိုအပ်သောသီးခြားခွဲတမ်းအဆင့်ကိုသတ်မှတ်ရန် သတ်မှတ်ထားသည့်သီးခြားသီးခြားခွဲတမ်းအဆင့် ကြေငြာချက်ကိုအသုံးပြုရန်ဖြစ်သည်။ ဥပမာအားဖြင့်:
<span><span><span class="hljs-comment">// ဖန်တီး PDO နမူနာ</span></span><span>
</span><span><span class="hljs-variable">$pdo</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">PDO</span></span><span>(</span><span><span class="hljs-string">'mysql:host=localhost;dbname=test'</span></span><span>, </span><span><span class="hljs-string">'username'</span></span><span>, </span><span><span class="hljs-string">'password'</span></span><span>);
</span><span><span class="hljs-comment">// ငွေပေးငွေယူအထီးကျန်အဆင့်ကိုသတ်မှတ်ပါ“ပြန်ပါ”</span></span><span>
</span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">exec</span></span><span>(</span><span><span class="hljs-string">"SET TRANSACTION ISOLATION LEVEL REPEATABLE READ"</span></span><span>);
</span><span><span class="hljs-comment">// ငွေပေးငွေယူတစ်ခုစတင်ပါ</span></span><span>
</span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">beginTransaction</span></span><span>();
</span><span><span class="hljs-comment">// ဒေတာဘေ့စစစ်ဆင်ရေးလုပ်ဆောင်ပါ</span></span><span>
</span><span><span class="hljs-comment">// ...</span></span><span>
</span><span><span class="hljs-comment">// တင်သွင်းမှုတင်သွင်း</span></span><span>
</span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">commit</span></span><span>();
</span></span>အထက်ပါကုဒ်တွင် ငွေသွင်းငွေထုတ်ခွဲဝေမှုအဆင့်ကိုထပ်ခါတလဲလဲဖတ်ရှုနိုင်သည့်ဖတ်ရှုခြင်းက ငွေပေးငွေယူအထီးကျန်အဆင့်ကိုထပ်ခါတလဲလဲဖတ်ရှုရန်သတ်မှတ်သည်။ ဆိုလိုသည်မှာလက်ရှိငွေပေးငွေယူတွင်ရှိသောစုံစမ်းမှုသည်အခြားငွေပေးငွေယူမှုများအကြားအချက်အလက်များကိုပြုပြင်မွမ်းမံလျှင်ပင်အမြဲတမ်းတူညီသောရလဒ်ကိုပြန်လည်ရရှိလိမ့်မည်ဟုဆိုလိုသည်။
ကွဲပြားခြားနားသောငွေလွှဲခြင်းအထီးကျန်မှုအဆင့်များသည်တစ်ပြိုင်နက်တည်းပြ problems နာများအပေါ်ကွဲပြားခြားနားသောအကျိုးသက်ရောက်မှုများရှိသည်။ တစ်ပြိုင်နက်တည်းကပြ problems နာများကိုကာကွယ်ရာတွင်သူတို့၏တိကျသောတင်ပြချက်များ -
uncommitted ကိုဖတ်ပါ
ဤအထီးကျန်မှုအဆင့်အရအရောင်းအ 0 ယ်များသည်အခြားအရောင်းအ 0 ယ်များသည်မကျူးလွန်မိသောအချက်အလက်များကိုမကျူးလွန်မိသောအချက်အလက်များကိုဖတ်ရှုနိုင်သည့်အချက်အလက်များကိုဖတ်ရှုနိုင်သည်။ တစ်ပြိုင်နက်တည်းကပြ problems နာများသည်အခြားအရောင်းအ 0 ယ်များလုပ်ဆောင်မှုအပေါ်ကန့်သတ်ချက်မရှိသောကြောင့်ဖြစ်သည်။
ကတိကဝတ်ကိုဖတ်ပါ
ဒီအထီးကျန်မှုအဆင့်ဟာညစ်ပတ်နေတဲ့ပြ problems နာတွေကိုရှောင်ရှားနိုင်တယ်။ သို့သော်ထပ်ခါတလဲလဲစာမဖတ်နိုင်သောစာဖတ်ခြင်း, i.e. ကိုနှစ်ကြိမ်ဖတ်ရှုသည့်အခါ, အချို့သောအခြေအနေများအတွက်ဒေတာရှေ့နောက်ညီညွတ်မှုသည်မမြင့်မားသောနေရာများအတွက်ဤအထီးကျန်မှုအဆင့်သည်စွမ်းဆောင်ရည်နှင့်ရှေ့နောက်ညီညွတ်မှုကိုဟန်ချက်ညီစေနိုင်သည်။
ထပ်ခါတလဲလဲဖတ်ပါ
ထပ်ခါတလဲလဲဖတ်ရှုခြင်းအထီးကျန်မှုအဆင့်သည်အရောင်းအ 0 ယ်တစ်ခုတွင်မေးမြန်းချက်များအားလုံးကိုပြန်လည်ပေးပို့ခြင်း, သို့သော် Phantom ကိုဖတ်ရှုနိုင်ပါသည်။ i.e. သည်လက်ရှိငွေပေးငွေယူမှုဆိုင်ရာစုံစမ်းမှုအကြားအချက်အလက်အသစ်များထည့်သွင်းနိုင်သည်။ ဤအထီးကျန်မှုအဆင့်တွင်တစ်ပြိုင်နက်တည်းရေးကူးစစ်ဆင်ရေးအပေါ်ပိုမိုတင်းကြပ်စွာထိန်းချုပ်နိုင်စွမ်းရှိသည်, ၎င်းသည်ဒေတာရှေ့နောက်ညီညွတ်မှုကိုတိုးတက်စေသည်။
မေျာက် serializable
Serial Offolation level သည်အကန့်အသတ်ဖြင့်သာဖြစ်သည်။ ဤအထီးကျန်ခြင်းအဆင့်သည်စွမ်းဆောင်ရည်အပေါ်များစွာအကျိုးသက်ရောက်နိုင်ပြီးတင်းကျပ်သောကိုက်ညီမှုလိုအပ်သည့်အခြေအနေများအတွက်သင့်လျော်သည်။
သင့်လျော်သောငွေပေးငွေယူအထီးကျန်ခြင်းအဆင့်ကိုရွေးချယ်ခြင်းသည်သတ်သတ်မှတ်မှတ်စီးပွားရေးလိုအပ်ချက်များအပေါ် အခြေခံ. ကုန်သွယ်မှုလိုအပ်သည်။
အကယ် . ၎င်းသည်စွမ်းဆောင်ရည်မြင့်မားရန်လိုအပ်သည့် application တစ်ခုဖြစ်သော်လည်းမြင့်မားသောအချက်အလက်ကိုက်ညီမှုမလိုအပ်ပါက, ၎င်းသည်တစ်ပြိုင်တည်းအရောင်းအ 0 ယ်များကိုအချက်အလက်များကိုပြုပြင်ရန်ခွင့်ပြုနေစဉ်ညစ်ပတ်သောစာဖတ်ခြင်းများကိုရှောင်ရှားလိမ့်မည်။
ထပ်ခါတလဲလဲဖတ်ရှုခြင်းသည် အသုံးချပရိုဂရမ်အများစုအတွက်ပိုမိုကောင်းမွန်သောရွေးချယ်မှုတစ်ခုဖြစ်သည်။ အကြောင်းမှာသူတို့သည်ထပ်ခါတလဲလဲမဟုတ်သောညစ်ပတ်သောစာဖတ်ခြင်းကိုတားဆီးနိုင်ပြီးဒေတာရှေ့နောက်ညီညွတ်မှုကိုသေချာဖတ်ရှုနိုင်သော်လည်းစွမ်းဆောင်ရည်ဆုံးရှုံးမှုသည်အတော်လေးသေးငယ်သည်။
တိကျသောကိုက်ညီမှုနှင့်အနိမ့်ဆုံးတစ်ပြိုင်နက်တည်းကိုက်ညီမှုရှိစေရန်လိုအပ်သည့်စနစ်များတွင် serialized အထီးကျန်အဆင့်ကိုရွေးချယ်နိုင်သည်။ ၎င်း၏စွမ်းဆောင်ရည်သည်ဆင်းရဲသော်လည်းတစ်ပြိုင်နက်တည်းကတစ်ပြိုင်နက်တည်းပြ problems နာများကိုလုံးဝရှောင်ရှားနိုင်သည်။
ကျွန်ုပ်တို့သည်တစ်ပြိုင်နက်တည်းလုပ်ဆောင်မှုများကြောင့်မှားယွင်းသောစစ်ဆင်ရေးများကြောင့်အမှားများကိုဖြစ်ပေါ်စေသည်မဟုတ်ကြောင်းသေချာစေရန်လိုအပ်သောဘဏ်စနစ်တစ်ခုတည်ဆောက်နေကြောင်းဆိုပါစို့။ ထပ်ခါတလဲလဲဖတ်ရှုနိုင်သည့် imolation အဆင့်ကိုသတ်မှတ်ခြင်းဖြင့်အခြားအရောင်းအဝယ်များမှပြုပြင်မွမ်းမံခြင်းမှချိန်ခွင်လျှာကိုကျွန်ုပ်တို့မှကာကွယ်ရန်ကျွန်ုပ်တို့ကာကွယ်နိုင်သည်။
<span><span><span class="hljs-comment">// ဖန်တီး PDO နမူနာ</span></span><span>
</span><span><span class="hljs-variable">$pdo</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">PDO</span></span><span>(</span><span><span class="hljs-string">'mysql:host=localhost;dbname=bank'</span></span><span>, </span><span><span class="hljs-string">'root'</span></span><span>, </span><span><span class="hljs-string">'password'</span></span><span>);
</span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">exec</span></span><span>(</span><span><span class="hljs-string">"SET TRANSACTION ISOLATION LEVEL REPEATABLE READ"</span></span><span>);
</span><span><span class="hljs-comment">// ငွေပေးငွေယူတစ်ခုစတင်ပါ</span></span><span>
</span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">beginTransaction</span></span><span>();
</span><span><span class="hljs-comment">// အကောင့်လက်ကျန်ငွေကိုစစ်ဆေးပါ</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT balance FROM accounts WHERE account_id = ?"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>([</span><span><span class="hljs-number">1</span></span><span>]);
</span><span><span class="hljs-variable">$balance</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetchColumn</span></span><span>();
</span><span><span class="hljs-comment">// အချို့သောစီးပွားရေးယုတ္တိဗေဒ execute</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$balance</span></span><span> > </span><span><span class="hljs-number">100</span></span><span>) {
</span><span><span class="hljs-comment">// နှုတ်ယူခြင်း</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"UPDATE accounts SET balance = balance - 100 WHERE account_id = ?"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>([</span><span><span class="hljs-number">1</span></span><span>]);
}
</span><span><span class="hljs-comment">// တင်သွင်းမှုတင်သွင်း</span></span><span>
</span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">commit</span></span><span>();
</span></span>ဤဥပမာတွင်အခြားအရောင်းအ 0 ယ်များ၏ပြုပြင်ခြင်းကြောင့်စုံစမ်းမှုလက်ကျန်ငွေသည်မပြောင်းလဲနိုင်စေရန် ထပ်ခါတလဲလဲဖတ်ရှုနိုင်သည့် အထီးကျန်မှုအဆင့်ကိုသေချာစေရန်သတ်မှတ်ထားသည်။
PDO :: GANTARSANTESATESATE () PHP တွင်ဒေတာဘေ့စ်အရောင်းအ 0 ယ်များကိုစီမံရန်ကျွန်ုပ်တို့အားကူညီနိုင်သည့်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ ကျိုးကြောင်းဆီလျော်သောငွေပေးငွေယူအထီးကျန်ခြင်းအဆင့်ဆက်တင်များဖြင့်ပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်တစ်ပြိုင်နက်တည်းကတစ်ပြိုင်နက်တည်းပြ problems နာများကိုထိရောက်စွာကာကွယ်နိုင်ပြီးဒေတာရှေ့နောက်ညီညွတ်မှုနှင့်သမာဓိရှိမှုကိုသေချာအောင်လုပ်နိုင်သည်။ ဖွံ့ဖြိုးတိုးတက်မှုလုပ်ငန်းစဉ်အတွင်းကျွန်ုပ်တို့သည်စွမ်းဆောင်ရည်နှင့်ဒေတာရှေ့နောက်ညီညွတ်မှုအကြားဆက်နွယ်မှုကိုဟန်ချက်ညီစေရန်စီးပွားရေးလိုအပ်ချက်များအပေါ် အခြေခံ. သင့်လျော်သောငွေပေးငွေယူအထီးကျန်မှုအဆင့်ကိုရွေးချယ်သင့်သည်။
သက်ဆိုင်သောတက်(ဂ်)များ:
PDO