ถามเกี่ยวกับ mysql_close() ไม่ใส่จะเกิดอะไรขึ้นต่อ server

อันนี้ข้องใจครับ
mysql_close();
ถ้าหากไม่ใส่ไว้ใน script ตอนปิดการใช้งานฐานข้อมูล จะเกิดอะไรกับเครื่อง server บ้างครับ

มีหลายเว็บของลูกค้าไม่ได้เขียนลงไปเลยครับ

ผมเคยอ่านเจอนะครับ http://www.webthaidd.com/board/show_topic.php?q=700

ถ้าใช้ mysql_connect ก็ไม่มีผลอะไรเพราะ connection จะปิดไปเองหลังจาก script ทำงานเสร็จครับ

ถ้าไม่ปิด ตัว php จะปิดเองอัตโนมัติ เมื่อ script จบการทำงานลงครับ

เกี่ยวมั้ยว่ามันจะปิดการทำงานช้ากว่าการที่ใส่เข้าไปครับ

ถ้าใส่ไป จำทำการปิดที่บรรทัดนั้นเลย
ถ้าไม่ใส่ ก็รอจน script ทำงานเสร็จ แล้วปิด บรรทัดสุดท้ายให้

หลักการประมาณนี้ครับ
ถ้า script ไม่ใหญ่ก็ไม่มีปัญหาอะไร

ต้องลองดูครับ หากคนเข้าเยอะๆ มี refresh เยอะๆ มีผล มากทีเดียว

แต่ที่สำคัญคือการ index และการ query ไม่ควรจะ select * นะครับ หากคนเข้าเยอะๆ … หนักเลยหละ

ถ้า connect โดยใช้ mysql_pconnect ก็ไม่ต้องใช้ mysql_close() ครับ
ถ้า connect โดยใช้ mysql_connect แล้วถ้าไม่ close มันจะปิดเองเมื่อหมดเวลา wait_timeout ของ mysql ครับ
แต่ถ้า connect ค้างไม่เกินค่า max_connection ก็ไม่ค่อยมีผลเสียหรอกครับ

เข้าใจแล้วครับ ถึงว่าทำไม process mysql ถึงระบายออกไม่ค่อยทันเพราะเปิด connect ค้างนี่เอง
เพราะเว็บที่เป็นปัญหา script ค่อนข้างจะมีขนาดใหญ่และถูกเรียกใช้งานบ่อยครับ

ขอบคุณทุกท่านมากครับ จะลองนำไปแก้ดู คิดว่าน่าจะช่วยลด load ได้มากขึ้น

ความรู้เพียบเลยครับ ปกติเขียน script งู ๆ ปลา ๆ อิอิ

ตรงใหนใช้งานบ่อยคงต้อง optimize ให้ดีครับ

select * มีได้นะครับ ถ้า table field ไม่มากเท่าใหร่ แต่จะไม่ควรใช้เวลา table มีขนาด field เยอะๆ แล้ว query บ่อยๆ แต่ไม่ได้ใชอะไรมาก :wub:

ตาม manual เลยครับ

Using mysql_close() isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution.

http://th2.php.net/mysql_close

อีกนิดครับ
timeout ถ้าตั้งน้อย เช่น 3วิน
ที จะมีผลเสียอะไรบ้างมั้ย

ใช้โทรศัพท์พิมพ์ลำบากจัง มองไม่ค่อยเห็น

ปกติใส่ mysql_close() เพื่อให้มันสมบูรณ์ๆน่ะครับ

lol

me too

ใช้ตัวนี้ก็คือ resource ให้ระบบได้ครับ
mysql_free_result($result);

เหมือนกันครับ

กันการผิดพลาดทั้งหมด หรือจะ extends คำสั่ง exit มาก็ได้ครับ

เวลา trow exception error ก็ให้ close connection แล้ว exit

ถ้าน้อยเกินไปอาจจะพบ error

ผมตั้งไว้ 600 โน่น

ช่วยอธิบายความหมายของค่าเหล่านี้ให้ด้วยนะครับ

interactive_timeout=20
wait_timeout=20
connect_timeout=20

ผลการทดสอบครับ
จากที่ใส่ mysql_close ลงไป Load ลดลงอย่างเห็นได้ชัดเลย
คิดว่าน่าจะเป็นการทำให้ระบาย Process เร็วกว่าการที่ไม่ได้ใส่ครับ

เอ… ที่ผ่านมาผมเข้าใจว่า มันจะเปิดทิ้งไว้แล้วไม่ปิดให้เลยนะครับเนี่ย คือจบหน้า php ก็ไม่ปิด connect ไปด้วยน่ะครับ

แล้วถ้า server ที่ไม่ตั้ง limit connecttin และเวลา เอาไว้มันก็จะกินจนเต็มและเว็บอื่นเปิด connect ใหม่ไม่ได้

ผมเข้าใจผิดมาตลอดหรือนี่