พอดีไปอ่านเจอบทความนี้ครับ http://korakitinfo.com/hong/readarticle/91
ข้อ 18 ที่บอกว่า
ปิดการเชื่อมต่อกับ database เมื่อทำงานเสร็จทุกอย่าง
เพื่อให้เหลือ connection ว่างสำหรับรองรับการทำงานต่อไป และเป็นการคืน ทรัพยากรกลับเข้ามาด้วย
คืออยากจะทราบว่าถ้าในกรณีที่หน้าเพจของเราต้องทำการ SELECT อะไรหลายๆ อย่าง(SELECT เยอะขึ้นตาม Modules ที่อยู่ตาม Column ซ้ายขวาของเพจที่โหลดเข้ามา)
ถ้าเป็นตามที่ข้อ 18 บอกควรจะเขียนเป็น
mysql_connect()
mysql_query()
mysql_fetch_array()
mysql_close()
...
....
ไปเรื่อยๆ จนจบการทำงานของเพจ
หรือกับอีกแบบหนึ่งคือเปิด-ปิด mysql ครั้งเดียวไปเลย
mysql_connect()
mysql_query()
mysql_fetch_array()
mysql_query()
mysql_fetch_array()
..
....
.....
mysql_ close()
อย่างไหนจะทำงานได้ดีกว่ากันครับ
ขอคำชี้แนะด้วยครับ พอดีพึ่งจะเริ่มหัดเขียน php-mysql ให้เป็น libraries ตัวเล็กๆ ตัวหนึ่งไว้ใช้งาน
ปล. หรือว่าหันไปใช้ MySQLi กับ PDO ดีกว่าครับ
ผมว่าเปิด-ปิดครั้งเดียวน่าจะดีกว่านะ แล้วก็อะไรที่รวมเป็นคิวรีย์ครั้งเดียวได้ก็ควรรวมนะครับ
อะไรที่ทำติดๆกัน ก็รวมกันไป เปิดปิดครั้งเดียว (ซึ่งส่วนใหญ่ PHP ผมมันก็ไม่ได้รออะไร ^^')
:: DigiKin8 ::
ถ้าในระหว่าง connect กับ close ไม่ได้ใช้เวลาในการคำนวณนานนัก ก็เปิดทิ้งไว้ก็ได้ครับ แต่ถ้ามีการคำนวณเยอะๆ ก็แยกเป็นหลายๆ กลุ่มก็ได้ แต่ไม่น่าจะถึงขั้น 1 connect 1 query
จากในบทความ บอกว่าให้สั่งปิดคอนเนคชั่นทุกครั้งเมื่อทำงานเสร็จทุกอย่าง ในกรณีของเวบเพจโดยทั่วไปก็คือให้ปิดหลังจากคิวรี่สุดท้ายของเพจนั้นครับ
ขอบคุณทุกคำแนะนำครับ ^^
https://developers.google.com/speed/articles/optimizing-php
ลองอ่านดูครับ ^^
บล็อกส่วนตัวที่อัพเดตตามอารมณ์และความขยัน :P
เป็นผมถ้าเปิดแล้วเปิดยาวเลย สำคัญว่าคือ!
เรื่องนี้น่ากังวลยิ่งกว่าจะปิด connection ตอนไหนซะอีก
มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB
มันจะมีกรณีที่โปรแกรมเราต้องติดต่อข้อมูลจากภายนอก (เช่น คุยกับ Facebook API) ซึ่งมันจะเกิด delay time สูงมาก (อาจถึง 100 ms) ซึ่งถือว่าเป็นเวลาที่นานเกินรับได้ ดังนั้นควรจะปิด mysql ไปก่อนคุย แล้วค่อยเปิดใหม่เมื่อจะใช้อีกครั้งหลังจากคุยกับ Facebook API เสร็จครับ
อันนี้เห็นด้วยครับ สรุปมัน per case เลยแฮะ
มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB
ถ้าไม่กังวลเรื่อง Query Performance มาก (เขียน Query ได้ดีเร็ว Optimize ไว้แล้ว) ถ้ามันเยอะมากจริงๆ แนะนำให้สร้างเป็น Function ไว้ที่เดียวเลยครับ แล้วเรียกเป็น library เอาจะสะดวกกว่า
ตัวอย่างเช่น dbconnector.php
แล้วเรียกผ่าน function ที่เราสร้างขึ้น (วิธีนี้มีข้อเสียที่จะแตก process connection ออกเป็นจำนวนมาก แต่ผมคิดว่า query ที่นานที่สุดคงไม่เกิน 1 วินาทีละมั้ง ถ้าไม่นับแบบดึง record มาแสดงทั้งหมดที่ต้องทำ Full table scan)
ไม่จำเป็นต้อง close ครับถ้าเป็นไปตาม
http://www.unzeen.com/article/1092/
ถ้าถามเรื่อง performance ก็เปลี่ยนไปใช้ mysqli หรือ PDO ดีกว่าครับ หลีกเลี่ยงการ injection ครับ