အလွန်အမင်းတစ်ပြိုင်နက်တည်းသို့မဟုတ်ဒေတာအထူးကြပ်မတ်အသုံးချပရိုဂရမ်များတွင်ဒေတာဘေ့စ်ဝင်ရောက်ခြင်းသည်စွမ်းဆောင်ရည်မြှင့်တင်မှုတစ်ခုဖြစ်သည်။ ဤပြ problem နာကိုတုံ့ပြန်သည့်အနေဖြင့် developer များက "Multi-Thatied queries" မှတဆင့်ထုတ်လုပ်မှုစွမ်းရည်ကိုတိုးတက်အောင်လုပ်ရန်စဉ်းစားသည်။ PHP developer များက PDostatement :: Fetchall () သည် ရလဒ်အားလုံးကိုပြန်လည်ရယူရန်နည်းလမ်းတစ်ခုအနေဖြင့်, ဤဆောင်းပါးသည်၎င်းကိုနည်းပညာဆိုင်ရာရှုထောင့်မှခွဲခြမ်းစိတ်ဖြာပြီးအကောင်အထည်ဖော်မှုမဟာဗျူဟာပေးလိမ့်မည်။
PDostatement :: Fetterall () သည် တစ်ပြိုင်နက်တည်းသတ်မှတ်ချက်မှအတန်းအားလုံးကိုဖယ်ရှားရန် PDO မှပေးသောအဆင်ပြေသောနည်းလမ်းဖြစ်သည်။ ရလဒ်အနေဖြင့်သေးငယ်သောအခြေအနေများအတွက်သင့်လျော်ပြီးအားသာချက်များသည်ကုဒ်ကိုရိုးရှင်းစေပြီးဒေတာဘေ့စ်ဆက်သွယ်မှုများအတွက်ရွေးကောက်ပွဲအရေအတွက်ကိုလျှော့ချနေသည်။ သို့သော်၎င်းသည်အခြေခံအားဖြင့် "တစ်ပြိုင်နက်တည်း" သို့မဟုတ် "multi-thread" နိုင်စွမ်းမရှိပါ ။ ၎င်းသည်ထပ်တူပြုထားသောပိတ်ဆို့ခြင်းဖြစ်သည်။ ၎င်းသည် Fetchall ကိုအကြိမ်မည်မျှရေးသားပါစေ () ဒေတာအားလုံးကိုဆွဲထုတ်သည်အထိ၎င်းတို့ကိုအလှည့်ကျစေလိမ့်မည်။
အကယ်. ရည်မှန်းချက်သည် စုံစမ်းစစ်ဆေးမှုတစ်ခု၏ဆွဲခြင်းနည်းလမ်းကိုပိုမိုကောင်းမွန်စေရန်အတွက်ကြီးမားသောပမာဏ၏ထိရောက်မှုကို တိုးတက်စေရန်အတွက်ဖြစ်လျှင်, အချို့သောစုံစမ်းမှုသည်ဆွဲဆောင်မှုနည်းလမ်းကိုသာမဟုတ်ဘဲ Multi-threads (pcntl),
အမှန်တကယ်အသုံးပြုမှုတွင် Fetchall () သည် အသေးစားအလတ်စားရလဒ်များကို ပိုမိုကောင်းမွန်စွာမလုပ်ဆောင်နိုင်ခြင်းကြောင့်အချက်အလက်များကိုအသုတ်တွင်ပြန်ပို့သောကြောင့်, သို့သော်၎င်းသည်ဒေတာအတန်းအတန်းများနှင့်ရင်ဆိုင်ရသည်နှင့်အမျှမှတ်ဉာဏ်မြင့်တက်သို့မဟုတ် PHP process blockage ကိုဖြစ်ပေါ်စေသည်။
ထို့ကြောင့်သင်သည် fetchall () ကို တစ်ပြိုင်နက်တည်းမေးမြန်းရာတွင်အသုံးပြုလိုပါကအကောင်အထည်ဖော်မှုယန္တရား၏အစိတ်အပိုင်းတစ်ခုသာဖြစ်သည်။
အပြိုင်တွင်ဒေတာဘေ့စ်များသို့မဟုတ်စားပွဲအခန်းကန့်များမျိုးစုံကိုချိတ်ဆက်ပါ။
မျိုးစုံ SQL တောင်းဆိုမှုများကိုတစ်ပြိုင်နက်တည်း asynchronous mode မှတဆင့်အစပျိုး;
ကလေးချည်များသို့မဟုတ်ကလေးဖြစ်စဉ်များတွင်သီးခြားစီခွဲခြားသတ်မှတ်ခြင်းနှင့် fetchall () fetchall () ကို သုံးပါ။
SWOOLE သည် Coroutine MySQL client ကိုပိတ်ဆို့ခြင်းမရှိသောဒေတာဘေ့စ်လုပ်ငန်းများကို အကောင်အထည်ဖော်နိုင်သည့် coroutql client ကိုထောက်ပံ့ပေးသည်။ Fetchall () နှင့်ပေါင်းစပ်ခြင်း (), ပိုမိုမြင့်မားသော throughput ကိုရယူနိုင်ပါတယ်။ ဥပမာများမှာအောက်ပါအတိုင်းဖြစ်သည် -
<code> Swoole \ Coroutine ကိုသုံးပါ။ SWOOLE \ Curreutine \ MySQL ကိုသုံးပါ။ CO \ run (function ကို (function) {
$ Queries = [
"အသက် 30 ရှိသည့်အသုံးပြုသူများထံမှ * ကိုရွေးချယ်ပါ။
"Status = 'ဆိုင်းငံ့ထား' သောအမှာစာများမှ * ကိုရွေးပါ။
"Creat_at> ယခု () - 0 င်ရောက်ခြင်း 1 ရက်)
];
$results = [];
foreach ($queries as $i => $sql) {
Coroutine::create(function () use (&$results, $i, $sql) {
$db = new MySQL();
$db->connect([
'host' => 'm66.net',
'user' => 'root',
'password' => '123456',
'database' => 'demo'
]);
$stmt = $db->prepare($sql);
if ($stmt) {
$results[$i] = $stmt->execute();
}
});
}
// အားလုံး coroutines အဆုံးသတ်ရန်စောင့်ပါ,အပြောင်းအလဲများရလဒ်များ
Coroutine::sleep(1); // ရိုးရှင်းသောစောင့်ဆိုင်း,ပိုမိုအဆင့်မြင့် coroutine signal ကိုရေးဆွဲခြင်းရရှိနိုင်ပါသည်
print_r($results);
});
</ code>
အထက်ပါကုဒ်တွင် SQL Query သုံးခုကိုတစ်ပြိုင်နက်တည်းကွပ်မျက်ခံရလိမ့်မည်။ Coroutine connection ကိုအသုံးပြုခြင်းနှင့်လျင်မြန်စွာခေါ်ဆိုမှုကိုလျင်မြန်စွာခေါ်ဆိုခြင်းနှင့်လျင်မြန်စွာခေါ်ဆို ခြင်း () "ပြည်တွင်းရွှေ့ပြောင်းမှု (fetchall) ကိုအသုံးပြုခြင်း) ။ ဒေတာဘေ့စ်အိမ်ရှင်အမည်မှာ M66.net ကို အသုံးပြုသည်။
Connection pool protot multiplexing - SWOOLE မှပေးသောဆက်သွယ်မှုရေကန်ကိုအသုံးပြုခြင်းသည်ဆက်နွယ်မှုကိုလျှော့ချနိုင်သည်။
ဖြန့်ချိမှုနှင့်စားပွဲတင်အထောက်အပံ့ - တစ်ပြိုင်နက်တည်းမေးမြန်းချက်များသည်ထုတ်ပြန်ခြင်းဇာတ်လမ်းများတွင်အထူးသဖြင့်ထိရောက်သောစုံစမ်းမှုများသည်အထူးသဖြင့်ထိရောက်စေသည်။
အရင်းအမြစ်များအကန့်အသတ် - အရင်းအမြစ်များကိုအလွန်အကျွံတင်ရန်တားဆီးရန်ကျိုးကြောင်းဆီလျော်သော Coroutines နှင့် Database connection များကိုသတ်မှတ်ခြင်းကိုဂရုပြုပါ။
Memory Control : ရလဒ်ကိုအထူးသဖြင့်ကြီးမားပါက fetchall အစား fetch ( ) traversal ကိုသုံးရန်အကြံပြုသည်။
PDostatement :: Fetchall () ကိုယ်တိုင်က Multimeading စွမ်းဆောင်ရည်ကိုမတိုးတက်စေပါ။ ၎င်းသည်ဒေတာအဆင့်ကိုထုတ်ယူရန်နည်းလမ်းတစ်ခုမျှသာဖြစ်သည်။ သို့သော်သင်သည် Coroutines နှင့် Concurrent Execute ဖွဲ့စည်းပုံနှင့်ပူးပေါင်းပါက Fetchall () သည် အချက်အလက်များကိုလျင်မြန်စွာပြန်လည်အသုံးပြုရန်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်လာနိုင်သည်။ PHP တွင်စစ်မှန်သောစာတိုအမျိုးမျိုးကိုတစ်ပြိုင်နက်တည်းစုံစမ်းမှုများကိုအကောင်အထည်ဖော်ရန် SWOOLE သို့မဟုတ်အခြားပြတ်တောင်းပြတ်တောင်းမူဘောင်များကဲ့သို့သော SWOOLE သို့မဟုတ်အခြားပြတ်တောင်းပြတ်တောင်းမူဘောင်များကိုအသုံးပြုရန်နှင့်စွမ်းဆောင်ရည်မြင့်မားသောဒေတာဆိုင်ရာမေးမြန်းမှုစနစ်ကိုနားလည်သဘောပေါက်ရန်အကြံပြုသည်။