อันนี้ข้องใจครับ
mysql_close();
ถ้าหากไม่ใส่ไว้ใน script ตอนปิดการใช้งานฐานข้อมูล จะเกิดอะไรกับเครื่อง 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.
อีกนิดครับ
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 ใหม่ไม่ได้
ผมเข้าใจผิดมาตลอดหรือนี่