ခေတ်သစ်ဝက်ဘ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဒေတာဘေ့စ်လုပ်ငန်းများ၏ထိရောက်မှုနှင့်ငွေပေးငွေယူစီမံခန့်ခွဲမှု၏ယုံကြည်စိတ်ချရမှုသည်အလွန်အရေးကြီးသည်။ PHP developer များအနေဖြင့် PDO (PHP Data Obserts) သည်ဒေတာဘေ့စ်လုပ်ငန်းများအတွက်ပိုမိုနှစ်သက်သောကိရိယာဖြစ်သည်မှာသေချာသည်။ သို့သော်ပြတ်တောင်းပြတ်တောင်းပရိုဂရမ်းမင်းများတိုးပွားလာခြင်းနှင့်အတူ allynchronous query query ကိုပေါင်းစပ်ပြီး PDO ထုတ်ပေးငွေစီမံခန့်ခွဲမှုစီမံခန့်ခွဲမှုသည် developer များကြုံတွေ့ရသောပြ problem နာတစ်ခုဖြစ်လာသည်။
ဤဆောင်းပါးသည် Code Phildraction နှင့် Data ရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန် PDOSactacation နည်းလမ်းနှင့် တွဲဖက်. ထိရောက်သောငွေပေးငွေယူစီမံခန့်ခွဲမှုမဟာဗျူဟာများကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။
Database စစ်ဆင်ရေးများတွင်အခြေခံအယူအဆသည်ဒေတာဘေ့စ်လုပ်ငန်းများအောင်မြင်ရန်သို့မဟုတ်အားလုံးမအောင်မြင်စေနိုင်သည့်အခြေခံအယူအဆဖြစ်သည်။ ရှုပ်ထွေးသောဒေတာလုပ်ငန်းများလုပ်ဆောင်သောအခါအရောင်းအ 0 ယ်များသည်အချို့သောစစ်ဆင်ရေးများတွင်အောင်မြင်မှုကြောင့်အချက်အလက်မကိုက်ညီသောပြ problem နာကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။
PHP တွင် PDO သည်ငွေပေး ငွေ ယူစီမံခန့်ခွဲမှုဆိုင်ရာလုပ်ဆောင်မှုများကိုထောက်ပံ့ပေးပြီး datrintransaction , commission methods များမှတဆင့်ဒေတာဘေ့စ်လုပ်ငန်းစဉ်ကိုတိကျစွာထိန်းချုပ်နိုင်သည်။ သို့သော်ရိုးရာရိုးရှင်းသော query mode တွင်ငွေပေးချေမှုစီမံခန့်ခွဲမှုသည် linear ဖြစ်ပြီးခေတ်သစ်ပြတ်တောင်းပြတ်တောင်းအစီအစဉ်၏အားသာချက်များကိုအပြည့်အဝအသုံးမပြုပါ။
Database သည်တုန့်ပြန်ရန်အတွက်လျှောက်လွှာတုန့်ပြန်မှုနှင့်စွမ်းဆောင်ရည်ကိုဖြည့်ဆည်းရန်စောင့်ဆိုင်းနေစဉ်အတွင်းအခြားအလုပ်များကိုဆက်လက်လုပ်ဆောင်ရန်အစီအစဉ်များကိုဆက်လက်လုပ်ဆောင်ရန်အစီအစဉ်များကိုဆက်လက်လုပ်ဆောင်နိုင်ရန်အတွက်အစီအစဉ်များကိုဆက်လက်လုပ်ဆောင်နိုင်ရန်စီစဉ်ထားသည်။ PHP တွင် Native Allonchronous ဒေတာဘေ့စ်ဒေတာဘေ့စ်စုံစမ်းရေးအထောက်အပံ့များမရှိပါ ။
ပြတ်တောင်းစုသောစုံစမ်းမှု၏အကြီးမားဆုံးအားသာချက်မှာ၎င်းသည် system အရင်းအမြစ်များကိုပိုမိုထိရောက်စွာအသုံးပြုနိုင်သည်,
သီအိုရီအရ PDO ငွေပေးငွေယူသည်ထပ်တူပြုခြင်းသည်ထပ်တူပြုခြင်းကိုဆိုလိုသည်။ ဆိုလိုသည်မှာငွေပေးငွေယူပြီးသည်အထိကွပ်မျက်ခံရစဉ်ကွပ်မျက်မှုတွင်ဒေတာဗတ်ဆက်သွယ်မှုကိုသော့ခတ်ထားသည်။ အကယ်. ငွေပေးချေမှုတစ်ခုအတွင်း escchronous query ကိုလုပ်ဆောင်ပါကအခြားလုပ်ငန်းများ၏စွမ်းဆောင်ရည်ကိုထိခိုက်စေသည့်ငွေပေးချေမှုဆိုင်ရာကွပ်မျက်မှုတွင်ဆက်သွယ်မှုကိုပြုလုပ်နိုင်သည်။ ဒါကြောင့်ပြတ်တောင်းပြတ်တောင်းရှာဖွေနေစဉ်ရှေ့နောက်ညီညွတ်မှုနှင့်ယုံကြည်စိတ်ချရမှုကိုကျွန်ုပ်တို့မည်သို့သေချာစေနိုင်သနည်း။
ပထမ ဦး စွာသင်ဟာအဓိကအယူအဆကိုနားလည်ဖို့လိုတယ်။ အကယ်. သင်သည်ပြတ်တောင်းပြတ်တောင်းမေးမြန်းချက်များကိုထမ်းဆောင်နေလျှင်ပင် database operatelk သည်ထပ်တူပြုခြင်းသည်ထပ်တူပြုခြင်းဖြစ်နေဆဲဖြစ်သည်။ Assynchronous Database စစ်ဆင်ရေးများနှင့်ပြတ်တောင်းပြတ်တောင်းမေးမြန်းချက်များကိုပေါင်းစပ်ခြင်းဖြင့်ထိရောက်သောငွေပေးငွေယူစီမံခန့်ခွဲမှုများကိုရရှိနိုင်ပါသည်။ ဤတွင်ပုံမှန်အကောင်အထည်ဖော်မှုဖြစ်စဉ်ကိုဤတွင်:
ငွေပေးငွေယူကိုစတင်ပါ - ငွေပေးငွေယူကိုစတင်ရန် PDO :: GANGANTRANSANTESATE ကို သုံးပါ။
ထပ်တူပြုခြင်းလုပ်ငန်းများကိုလုပ်ဆောင်ခြင်း - ဒေတာများကိုထည့်ခြင်းနှင့်မွမ်းမံခြင်းစသည့်ဒေတာဘေ့စ်လုပ်ငန်းများကိုလုပ်ဆောင်ပါ။
ပြတ်တောင်းပြတ်တောင်းရှာဖွေမှုကိုအစပြုပါ ။
asynchronous query ကိုဖြည့်စွက်ရန်စောင့်ပါ ။
STORMBACK အရောင်းအဝယ် (STOCKBACE) သို့မဟုတ် ROLLBACK ( STROTBACK) သို့မဟုတ် Rollback (rollback () ) သို့မဟုတ် Rollback ( Rollback () ) ငွေပေးချေမှုကိုဆုံးဖြတ်ပါ
Asynchonous Query နှင့် PDO အရောင်းအ 0 ယ်များပေါင်းစပ်မှုကိုအကောင်အထည်ဖော်ရန် RefillPP ကို ကျွန်ုပ်တို့အသုံးပြုသည်ဆိုပါစို့။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-keyword">use</span></span><span> </span><span><span class="hljs-title">React</span></span><span>\</span><span><span class="hljs-title">EventLoop</span></span><span>\</span><span><span class="hljs-title">Factory</span></span><span>;
</span><span><span class="hljs-keyword">use</span></span><span> </span><span><span class="hljs-title">React</span></span><span>\</span><span><span class="hljs-title">MySQL</span></span><span>\</span><span><span class="hljs-title">Factory</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-title">MySQLFactory</span></span><span>;
</span><span><span class="hljs-keyword">require</span></span><span> </span><span><span class="hljs-string">'vendor/autoload.php'</span></span><span>;
</span><span><span class="hljs-variable">$loop</span></span><span> = </span><span><span class="hljs-title class_">Factory</span></span><span>::</span><span><span class="hljs-title function_ invoke__">create</span></span><span>();
</span><span><span class="hljs-variable">$mysql</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">MySQLFactory</span></span><span>(</span><span><span class="hljs-variable">$loop</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">'root'</span></span><span>, </span><span><span class="hljs-string">''</span></span><span>);
</span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">setAttribute</span></span><span>(PDO::</span><span><span class="hljs-variable constant_">ATTR_ERRMODE</span></span><span>, PDO::</span><span><span class="hljs-variable constant_">ERRMODE_EXCEPTION</span></span><span>);
</span><span><span class="hljs-variable">$loop</span></span><span>-></span><span><span class="hljs-title function_ invoke__">addTimer</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>, function() </span><span><span class="hljs-keyword">use</span></span><span> ($</span><span><span class="hljs-title">pdo</span></span><span>, $</span><span><span class="hljs-title">mysql</span></span><span>) {
// ငွေပေးငွေယူတစ်ခုစတင်ပါ
$</span><span><span class="hljs-title">pdo</span></span><span>-></span><span><span class="hljs-title">beginTransaction</span></span><span>();
</span><span><span class="hljs-comment">// synchronous ဒေတာဘေ့စစစ်ဆင်ရေးလုပ်ဆောင်ပါ</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">"INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com')"</span></span><span>);
</span><span><span class="hljs-comment">// asynchronous query ကိုဖန်တီးပါ</span></span><span>
</span><span><span class="hljs-variable">$mysql</span></span><span>-></span><span><span class="hljs-title function_ invoke__">connect</span></span><span>(</span><span><span class="hljs-string">'user:pass@localhost/dbname'</span></span><span>)-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">'SELECT * FROM users'</span></span><span>)-></span><span><span class="hljs-title function_ invoke__">then</span></span><span>(
function (</span><span><span class="hljs-variable">$result</span></span><span>) </span><span><span class="hljs-keyword">use</span></span><span> ($</span><span><span class="hljs-title">pdo</span></span><span>) {
// asynchronous query ၏ရလဒ်များကို အခြေခံ. ငွေပေးငွေယူတင်သွင်းမှုသို့မဟုတ် Rollback ကိုဆုံးဖြတ်ပါ
</span><span><span class="hljs-title">if</span></span><span> ($</span><span><span class="hljs-title">result</span></span><span>-></span><span><span class="hljs-title">numRows</span></span><span> > 0) {
$</span><span><span class="hljs-title">pdo</span></span><span>-></span><span><span class="hljs-title">commit</span></span><span>(); </span><span><span class="hljs-comment">// တင်သွင်းမှုတင်သွင်း</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Transaction committed successfully."</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">rollBack</span></span><span>(); </span><span><span class="hljs-comment">// ပြန်အရောင်းအလှိမ့်</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Transaction rolled back."</span></span><span>;
}
},
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> (</span><span><span class="hljs-params"><span class="hljs-variable">$error</span></span></span><span>) </span><span><span class="hljs-keyword">use</span></span><span> (</span><span><span class="hljs-params"><span class="hljs-variable">$pdo</span></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__">rollBack</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Error during asynchronous query: <span class="hljs-subst">$error</span></span></span><span>";
}
);
});
</span><span><span class="hljs-variable">$loop</span></span><span>-></span><span><span class="hljs-title function_ invoke__">run</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
ဤဥပမာတွင်ကျွန်ုပ်တို့သည် Refriphpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp ္ဌမစုံစမ်းရေးယန္တရားမှတစ်ဆင့်ဒေတာဘေ့စ်လုပ်ငန်းများကိုစတင်ခဲ့သည်။ ကျနော်တို့စုံစမ်းမှုအောင်မြင်ပြီးနောက်သာငွေပေးငွေယူတင်ပြ; အကယ်. စုံစမ်းမှုအမှားဖြစ်ပေါ်နေပါကငွေပေးငွေယူကိုပြန်လှိမ့်လိမ့်မည်။
ပြတ်တောင်းပြတ်တောင်းရှာဖွေမှုနှင့်ငွေပေးငွေယူစီမံခန့်ခွဲမှုပေါင်းစပ်သောအခါအောက်ပါအချက်များသည်စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်စေရန်အာရုံစိုက်ရန်လိုအပ်သည် -
အရောင်းအ 0 ယ်များတွင်ထပ်တူပြုခြင်းလုပ်ငန်းများကိုလျှော့ချပါ ။ အရောင်းအ 0 ယ်များတွင်ထပ်တူပြုခြင်းလုပ်ငန်းများကိုအနည်းဆုံးအကွာအဝေးအထိထိန်းချုပ်ရန်ကြိုးစားပါ။
ဆင်ခြင်တုံတရားကို အသုံးပြု. asynchronous query ကိုအသုံးပြုပါ - ပြတ်တောင်းပြတ်တောင်းရှာဖွေမှုသည်တစ်ပြိုင်နက်တည်းလုပ်ဆောင်မှုကိုထိရောက်စွာတိုးတက်စေနိုင်သည်,
Connection pooling : ဒေတာဘေ့စ်လုပ်ငန်း၏ထိရောက်မှုကိုတိုးတက်စေရန်အတွက် PDO ၏ဆက်သွယ်မှုကိုရေကူးကန်လည်ပတ်မှုတစ်ခုစီတွင်ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုပြန်လည်တည်ဆောက်ခြင်းကိုရှောင်ရှားနိုင်သည်။
asynchronous query and PDO ထုတ်ပေးစီမံခန့်ခွဲမှုပေါင်းစပ်မှုပေါင်းစပ်မှုသည်အထူးသဖြင့်တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်းပတ် 0 န်းကျင်တွင်စနစ်၏ throughput နှင့်တုန့်ပြန်မှုနှုန်းကိုတိုးတက်စေနိုင်သည်။ သို့သော်ငွေပေးချေမှုစီမံခန့်ခွဲမှုနှင့်အမှားကိုင်တွယ်မှုကိုအချက်အလက်သမာဓိရှိခြင်းနှင့်ရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန်အလွန်ဂရုစိုက်ရန်လိုအပ်သည်။ ကျိုးကြောင်းဆီလျော်သောဒီဇိုင်းနှင့်သင့်လျော်သောနည်းပညာ stack မှတဆင့် developer များပိုမိုထိရောက်သောနှင့်ယုံကြည်စိတ်ချရသောဒေတာဘေ့စ်စစ်ဆင်ရေးအောင်မြင်ရန်နိုင်ပါတယ်။
သက်ဆိုင်သောတက်(ဂ်)များ:
PDO