PHP Development တွင်ဝေးလံခေါင်သီသောဒေတာဘေ့စ်တစ်ခုနှင့်ချိတ်ဆက်ခြင်းသည်များသောအားဖြင့်ဖြစ်သော်လည်းအမှားအယွင်းများဖြစ်သည်။ Connect () သို့မဟုတ်အလားတူလုပ်ဆောင်ချက်များကို အသုံးပြု. ဝေးလံခေါင်သီသောဒေတာဘေ့စ ် နှင့်ချိတ်ဆက်သောအခါ (ထိုကဲ့သို့သော MySQLI_Connect ), ဤဆောင်းပါးသည် PHP ကို အသုံးပြု. ဝေးလံခေါင်သီသောဒေတာဘေ့စ်များနှင့်ဆက်သွယ်သည့်အခါအာရုံစူးစိုက်သင့်သည့်ရှုထောင့်များကိုဆန်းစစ်ကြည့်ပါလိမ့်မည်။
ပထမ ဦး စွာ MySQL သို့မဟုတ်အခြားဒေတာဘေ့စ်ဆာဗာများသည်ပုံမှန်အားဖြင့်ဒေသဆိုင်ရာဆက်သွယ်မှုများကိုသာခွင့်ပြုနိုင်သည်။ PHP application သည်နေသည့်ဆာဗာမှဆက်သွယ်မှုများကိုခွင့်ပြုရန်ဝေးလံသော host ၏ဒေတာဘေ့စ်၏ဒေတာဘေ့စ်ဆာဗာကိုသေချာအောင်ပြုလုပ်ရန်လိုအပ်သည်။ MySQL ကိုဥပမာတစ်ခုအဖြစ်ယူပါ။
My.cnf ဖိုင်တွင်ချည်နှောင်ထားသော bind-address parameter သည် 0.0.0.0 သို့မဟုတ်ပြင်ပ IP ကိုသတ်မှတ်ထားခြင်းရှိမရှိစစ်ဆေးပါ။
ဒေတာဘေ့စ်အသုံးပြုသူသည်ဝေးလံခေါင်ဖျားသော IP မှဝင်ရောက်ခွင့်ရှိ / မရှိ။ ခွင့်ပြုချက်ကိုစစ်ဆေးရန်သို့မဟုတ်ထည့်ရန်အောက်ပါ SQL command ကို run နိုင်သည်။
GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'%' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
အကယ်. သင်သည်အချို့သော IP လိပ်စာကို 0 င်ရောက်ခွင့်ပြုပါက၎င်းကိုအိုင်ပီလိပ်စာဖြင့် % အစားထိုးနိုင်သည်။
ဝေးလံခေါင်သီသောဆက်သွယ်မှု၏အဓိကအကြောင်းရင်းမှာပစ်မှတ်ဆာဗာ၏ဒေတာဘေ့စ်ဆိပ်ကမ်း (ဥပမာ MySQL default port 3306) သည်အများပြည်သူအတွက်ပွင့်လင်းရမည်။ အောက်ပါ command ကိုအသုံးပြုပြီး port ကိုဖွင့်သည်ကိုသင်စစ်ဆေးနိုင်သည်။
telnet m66.net 3306
ဆက်သွယ်မှုမအောင်မြင်ပါက port ကို Target Server ၏ firewall သို့မဟုတ် cloud platform လုံခြုံရေးအဖွဲ့ကခွင့်မပြုပါ။ သင့်တော်သောဆိပ်ကမ်းကို firewall တွင်ဖွင့်ရန်သို့မဟုတ် Cloud Platform အတွက် Cloud Platform အတွက်လုံခြုံရေးအုပ်စုစည်းမျဉ်းများကိုဖွင့်ရန်လိုအပ်သည် (ဥပမာ Alibaba Cloud, AWS)
PHP တွင်ဘုံဒေတာဘေ့စ် connection လုပ်ဆောင်ချက်များတွင် -
MySQLI_Connect () (MySQL အတွက်)
PDO (ယေဘုယျအားဖြင့်အသေးစိတ်အချက်အလက်များ) ကိုထောက်ပံ့သည်။
နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
$host = 'm66.net';
$user = 'your_user';
$password = 'your_password';
$dbname = 'your_db';
$conn = mysqli_connect($host, $user, $password, $dbname);
if (!$conn) {
die('ဆက်သွယ်မှုမအောင်မြင်ပါ: ' . mysqli_connect_error());
}
သို့မဟုတ် PDO ကိုသုံးပါ။
try {
$dsn = 'mysql:host=m66.net;dbname=your_db;charset=utf8';
$pdo = new PDO($dsn, 'your_user', 'your_password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die('ဆက်သွယ်မှုမအောင်မြင်ပါ: ' . $e->getMessage());
}
connection မအောင်မြင်သည့်အချိန်၌တုန့်ပြန်မှုရရန်မှားယွင်းစွာကိုင်တွယ်ရန်အမှားအယွင်းများကိုပြန်လည်ရယူရန်အတွက်အမှားအယွင်းများကိုအမြဲတမ်းထည့်သွင်းရန်အကြံပြုသည်။
PHP ဖိုင်များရှိ Hard-coded database usernames နှင့် password များကလုံခြုံရေးအန္တရာယ်များကိုအထူးသဖြင့် Code ကိုထိန်းချုပ်သည့်စနစ်သို့မဟုတ်မျှဝေထားသောပတ်ဝန်းကျင်သို့တင်ထားသောအခါလုံခြုံရေးအန္တရာယ်များကိုဖြစ်ပေါ်စေသည်။ ပိုမိုကောင်းမွန်သောချဉ်းကပ်နည်းသည်အထိခိုက်မခံသောသတင်းအချက်အလက်များကို configuration files များ (သို့) ပတ်ဝန်းကျင် variable များကိုသိမ်းဆည်းရန်ဖြစ်သည်။
$db_user = getenv('DB_USER');
$db_pass = getenv('DB_PASS');
ဖြန့်ကျက်သောပတ် 0 န်းကျင်တွင်ပတ် 0 န်းကျင်တွင်ပတ် 0 န်းကျင်ဆိုင်ရာ variable များကို setting လုပ်ခြင်းသည်အထောက်အထားများကိုပေါက်ကြားခြင်းမှကာကွယ်နိုင်သည်။
ဆာဗာများအနှံ့အပြားတွင်ဆက်သွယ်သည့်အခါဒေတာဘေ့စ်ဆက်သွယ်မှုများကိုအများပြည်သူကွန်ယက်မှတစ်ဆင့်ပြုလုပ်နိုင်ပြီးလူ -In-the-the- အလယ်တွင်တိုက်ခိုက်ခံရနိုင်သည့်အန္တရာယ်ရှိနိုင်သည်။ အောက်ပါနည်းလမ်းများကိုလုံခြုံရေးကိုမြှင့်တင်ရန်စဉ်းစားနိုင်သည်။
SSH ဥမင်လိုဏ်ခေါင်းသို့မဟုတ် VPN ကို အသုံးပြု. ဆက်သွယ်ရေးကိုစာဝှက်ပါ။
SSL-enabled database connection နည်းလမ်းများကိုသုံးပါ။ ဥပမာအားဖြင့်, PDO ရှိ SSL parameter တစ်ခုကိုထည့်ပါ။
$dsn = 'mysql:host=m66.net;dbname=your_db;charset=utf8';
$options = [
PDO::MYSQL_ATTR_SSL_CA => '/path/to/ca.pem',
];
$pdo = new PDO($dsn, 'user', 'pass', $options);
ဝေးလံခေါင်သီသောဒေတာဘေ့စ်တစ်ခုနှင့်ချိတ်ဆက်သောအခါကွန်ယက်မတည်ငြိမ်မှုသည်အဆက်အသွယ်ပြတ်တောက်မှုနှင့်ဆက်စပ်မှုကိုဖြစ်စေနိုင်သည်။ ကျိုးကြောင်းဆီလျော်သောဆက်သွယ်မှုအချိန်ကုန်ကိုသတ်မှတ်ရန်အကြံပြုသည်။
mysqli_options($conn, MYSQLI_OPT_CONNECT_TIMEOUT, 10);
တစ်ချိန်တည်းမှာပင်အက်ပလီကေးရှင်းသည်ဒေတာဘေ့စ်ကိုမကြာခဏဝင်ရောက်ကြည့်ပါက overhead နှင့်ဒေတာဘေ့စ်၏ဖိအားကိုလျှော့ချရန်ဒေတာဘေ့စ် connection pool ကိုသုံးပြီးစဉ်းစားပါ။
ကွန်ယက် latency ကြောင့်ဝေးလံခေါင်ဖျားသောဒေတာဘေ့စ်များကိုရယူခြင်းသည်ဒေသအလိုက်ထက်မကြာခဏလေ့ကျင့်ခန်းလုပ်ခြင်းဖြစ်သည်။ ၎င်းကိုအောက်ပါနည်းလမ်းများဖြင့်အကောင်းဆုံးပြုလုပ်နိုင်သည်။
SQL Query အရေအတွက်ကိုလျှော့ချပြီးမကြာခဏဆက်သွယ်မှုများကိုရှောင်ပါ။
ဒေတာဘေ့စ်ဖိအားကိုသက်သာစေရန်တတ်နိုင်သမျှအမြန်ဆုံး cache, memcached ကဲ့သို့သော) ကိုသုံးပါ။
တုန့်ပြန်မှုမြန်နှုန်းတိုးတက်စေရန် SQL Query များကိုပိုမိုကောင်းမွန်စေရန် paging နှင့် indexing ကိုအသုံးပြုပါ။
PHP တွင်ဝေးလံခေါင်သီသောဒေတာဘေ့စ်များကိုဝင်ရောက်ရန် ဆက်သွယ်မှု () သို့မဟုတ်အခြားဆက်သွယ်မှုလုပ်ဆောင်ချက်များကိုအသုံးပြုသောအခါကွန်ယက်, ပြင်ဆင်မှု, လုံခြုံရေးနှင့်စွမ်းဆောင်ရည်ကဲ့သို့သောရှုထောင့်မျိုးစုံမှသူတို့ကိုစဉ်းစားရန်လိုအပ်သည်။ ဝေးလံခေါင်ဖျားသော 0 န်ဆောင်မှုခံယူခွင့်များကိုမှန်ကန်စွာဖြေရှင်းနိုင်ခြင်းအားဖြင့်သာ ports များသည်ပွင့်လင်းမြင်သာမှုရှိပါသည်။