0021 | วิธีนับจำนวนแถว (record) ในตาราง
Sunday, June 15th, 2008 Posted in Database, PHP Coding | 3 Comments »ดองไว้นานเชียะ = =’
ขออภัยด้วยครับ แบบว่าขี้เกียจเขียน เอ้ย งานยุ่งๆ
มหาลัยเปิดเทอมแล้ว ตารางเรียนเห็นแล้วแทบบ้า
เอาวันหยุดของตูคืนมา เอาวันหยุดของตูคืนมา T_T
เข้าประเด็นเลยดีกว่า
ช่วงนี้มีงานประเภทนี้เยอะครับ เห็นแล้วก็เซ็งไอ้คนเขียนเว็บคนเก่าที่ทำระบบมาจริงๆ
คุณพี่เขียนไว้อย่างนี้ครับ….
$sql = mysql_query("SELECT * FROM table"); $records = mysql_num_rows($sql);
ไอ้อันที่จริงมันก็ไม่ผิดอะไรหรอกครับถ้าจะใช้แบบนี้ เพราะ code มันก็ทำงานได้ปกติสุขดีของมัน
แต่… ใครจะรู้มั้ยครับ ว่า mysql มันต้องส่งข้อมูลมากขนาดไหน
สมมติว่า ตารางมีขนาด 1 MB
การ query นี้จะทำให้ mysql ต้องส่งข้อมูลขนาด 1 MB ให้ client ที่ทำการ query
แล้ว client จะเป็นผู้นับจำนวนแถวเอง
ลองคิดดูว่าถ้าตารางเราเกิดมีขนาด 10 MB หรือมีคนเข้าเยอะๆ นะครับ
สมมติ ตารางเดิม ขนาด 1 MB
แต่คนเข้า “แค่” นาทีละ 60 ครั้ง (ตกวินาทีละ 1 ครั้ง)
เท่ากับ Database Server ต้องส่งข้อมูลให้ client ถึงวินาทีละ 1 MB
…
ถ้าขนาดฐานข้อมูลใหญ่ขึ้น
ถ้าคนเข้าเยอะขึ้น… ลองคิดดูครับว่ามันจะเปลืองทรัพยากรระบบขนาดไหน
วิธีนับจำนวน record จริงๆ ที่ใช้กันทั่วไปในระบบใหญ่ๆ เค้าใช้กันแบบนี้ครับ
$sql = mysql_query("SELECT COUNT(*) FROM table"); $res = mysql_fetch_array($sql); $records = $res[0];
จำนวนบรรทัดเยอะขึ้น 1 บรรทัด แต่การทำงานลดลงฮวบฮาบผิดกันลิบๆ
* คำสั่ง SELECT COUNT(*) ห้ามเอาไปใช้กับตารางประเภท InnoDB โดยเด็ดขาดนะครับ
มิเช่นนั้น database server อาจน็อคเอาได้ง่ายๆ
0015 | PHP Email Validation
Wednesday, May 14th, 2008 Posted in PHP Coding | 5 Comments »บทความนี้อ้างอิง + คัดลอกมาจากเว็บไซต์ต่อไปนี้
Spoono.com – Spoono – PHP Tutorials – Email Validation
แบบว่ากำลังหาตัว validate email เพลินๆ ไปเจอตัวนี้มา ถูกใจครับ (ฮาๆ)
เอามาลง เผื่อเก็บไว้ใช้อีก
0000ff;">function 993300;">checkEmail(008080;">$email) {
0000ff;">if (ff0000;">eregi(ff00ff;">“^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]”, 008080;">$email)) {
0000ff;">return false;
}0000ff;">list(008080;">$Username, 008080;">$Domain) = ff0000;">split(ff00ff;">“@”,008080;">$email);
0000ff;">if (ff0000;">getmxrr(008080;">$Domain, 008080;">$MXHost)) {
0000ff;">return true;
} 0000ff;">else {
0000ff;">if (ff0000;">fsockopen(008080;">$Domain, 993300;">25, 008080;">$errno, 008080;">$errstr, 993300;">7)) {
0000ff;">return true;
} 0000ff;">else {
0000ff;">return false;
}
}
}
ปล. ทำ syntax highlight แบบอัตโนมือนี่เหนื่อยนะเนี่ย
Tags: email, PHP Coding, validation

