พอดีไปอ่านเจอบทความนี้ครับ 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 ดีกว่าครับ
ผมว่าเปิด-ปิดครั้งเดียวน่าจะด
adente Wed, 21/11/2012 - 23:26
ผมว่าเปิด-ปิดครั้งเดียวน่าจะดีกว่านะ แล้วก็อะไรที่รวมเป็นคิวรีย์ครั้งเดียวได้ก็ควรรวมนะครับ
อะไรที่ทำติดๆกัน ก็รวมกันไป
PiKO Wed, 21/11/2012 - 23:58
อะไรที่ทำติดๆกัน ก็รวมกันไป เปิดปิดครั้งเดียว (ซึ่งส่วนใหญ่ PHP ผมมันก็ไม่ได้รออะไร ^^')
ถ้าในระหว่าง connect กับ
bongikairu Thu, 22/11/2012 - 01:23
ถ้าในระหว่าง connect กับ close ไม่ได้ใช้เวลาในการคำนวณนานนัก ก็เปิดทิ้งไว้ก็ได้ครับ แต่ถ้ามีการคำนวณเยอะๆ ก็แยกเป็นหลายๆ กลุ่มก็ได้ แต่ไม่น่าจะถึงขั้น 1 connect 1 query
จากในบทความ
sugarcane Thu, 22/11/2012 - 01:39
จากในบทความ บอกว่าให้สั่งปิดคอนเนคชั่นทุกครั้งเมื่อทำงานเสร็จทุกอย่าง ในกรณีของเวบเพจโดยทั่วไปก็คือให้ปิดหลังจากคิวรี่สุดท้ายของเพจนั้นครับ
ขอบคุณทุกคำแนะนำครับ ^^
HamCNX Thu, 22/11/2012 - 09:55
ขอบคุณทุกคำแนะนำครับ ^^
https://developers.google.com
itpcc Thu, 22/11/2012 - 12:21
https://developers.google.com/speed/articles/optimizing-php
ลองอ่านดูครับ ^^
เป็นผมถ้าเปิดแล้วเปิดยาวเลย
EThaiZone Thu, 22/11/2012 - 17:40
เป็นผมถ้าเปิดแล้วเปิดยาวเลย สำคัญว่าคือ!
เรื่องนี้น่ากังวลยิ่งกว่าจะปิด connection ตอนไหนซะอีก
มันจะมีกรณีที่โปรแกรมเราต้องต
lancaster Thu, 22/11/2012 - 18:16
มันจะมีกรณีที่โปรแกรมเราต้องติดต่อข้อมูลจากภายนอก (เช่น คุยกับ Facebook API) ซึ่งมันจะเกิด delay time สูงมาก (อาจถึง 100 ms) ซึ่งถือว่าเป็นเวลาที่นานเกินรับได้ ดังนั้นควรจะปิด mysql ไปก่อนคุย แล้วค่อยเปิดใหม่เมื่อจะใช้อีกครั้งหลังจากคุยกับ Facebook API เสร็จครับ
อันนี้เห็นด้วยครับ สรุปมัน
EThaiZone Thu, 22/11/2012 - 20:29
In reply to มันจะมีกรณีที่โปรแกรมเราต้องต by lancaster
อันนี้เห็นด้วยครับ สรุปมัน per case เลยแฮะ
ถ้าไม่กังวลเรื่อง Query
gogogokrit Sun, 25/11/2012 - 12:24
ถ้าไม่กังวลเรื่อง Query Performance มาก (เขียน Query ได้ดีเร็ว Optimize ไว้แล้ว) ถ้ามันเยอะมากจริงๆ แนะนำให้สร้างเป็น Function ไว้ที่เดียวเลยครับ แล้วเรียกเป็น library เอาจะสะดวกกว่า
ตัวอย่างเช่น dbconnector.php
แล้วเรียกผ่าน function ที่เราสร้างขึ้น (วิธีนี้มีข้อเสียที่จะแตก process connection ออกเป็นจำนวนมาก แต่ผมคิดว่า query ที่นานที่สุดคงไม่เกิน 1 วินาทีละมั้ง ถ้าไม่นับแบบดึง record มาแสดงทั้งหมดที่ต้องทำ Full table scan)
ไม่จำเป็นต้อง close
lojorider Wed, 16/01/2013 - 04:02
ไม่จำเป็นต้อง close ครับถ้าเป็นไปตาม
http://www.unzeen.com/article/1092/
ถ้าถามเรื่อง performance
bencomtech Sat, 28/02/2015 - 15:48
ถ้าถามเรื่อง performance ก็เปลี่ยนไปใช้ mysqli หรือ PDO ดีกว่าครับ หลีกเลี่ยงการ injection ครับ