mysql_connect กับ mysql_pconnect ต่างกันยังไง

mysql_connect กับ mysql_pconnect ต่างกันยังไง

  • mysql_connect จะปิด Connection หลังจากจบการทำงานของ script นั้นทันที(หรือมีถ่วงเวลาไว้แปปนึง) ทำให้ไม่มี process ค้างใน mysql เยอะนัก
  • mysql_pconnect จะเปิด Connection ค้างไว้ หากมีการเชื่อมต่อที่ Mysql Database ตัวนี้อีก จะใช้ Connection เดิมแทนที่จะต่อ Connection ใหม่

เปรียบเทียบข้อดี

  • mysql_connect จะมี Process ค้างใน mysql น้อยกว่า คือคืน memory ทันทีที่จบการทำงาน
  • mysql_pconnect จะเชื่อมต่อได้รวดเร็วกว่า แต่มี Process ต้างใน mysql อยู่ทำให้กิน memory มากกว่า

เปรียบเทียบข้อเสีย

  • mysql_connect จะใช้เวลาการเชื่อมต่อนานกว่าทำให้ช้ากว่า
  • mysql_pconnect มี Process ใน mysql มากกว่า ทำให้กิน ram มากกว่า

ฟันธงว่าควรใช้อะไรดี

อัน นี้ขึ้นอยู่กับงาน หากเป็นงานที่ต้องการ Connection เยอะมากๆแนะนำ mysql_pconnect (จริงๆ ถ้าไม่ได้ใช้ Share Host หรือมี Database แค่ตัวเดียว หรือจำนวนน้อยใน Server นั้นใช้ไปเลยก็ไม่เสียหายครับ) แต่ถ้าเป็น Shared Host หรือ มี Database จำนวนมากก็ใช้ mysql_connect ปกติไปก็ได้ครับ

ผลทดสอบความเร็ว

ของ mysql_connect

Code:

ผล:

ผลการทดสอบ mysql_connect จะเห็นได้ว่ากดราฟพุ่งสูงสุดที่ 8000 Connections เลยทีเดียว

จะเห็นว่ากราฟพุ่งสูงสุดที่ 8000 Connection (จริงๆน่าจะเป็น 4000 นะครับ แต่เวลานั้น เครื่องผมกาก refresh กราฟไม่ได้ 1 ทีครับ) และต่อได้ 2715 ครั้งต่อ 1 วินาทีเลยทีเดียว (Concurrent หรือจำนวนการเชื่อมต่อพร้อมกันคือ 200 นะครับ)

mysql_pconnect

Code:

ผล:

ผลการทดสอบ mysql_pconnect จะเห็นได้ว่ากดราฟพุ่งสูงสุดที่ประมาณ 130 Connections เอง

จะเห็นว่ากราฟพุ่งสูงสุดที่ 130 Connection  และต่อได้ 4688 ครั้งต่อ 1 วินาทีเลยทีเดียว (Concurrent หรือจำนวนการเชื่อมต่อพร้อมกันคือ 200 นะครับ) จะเห็นได้ว่าเร็วกว่า mysql_connect เกือบ 2 เท่าเลยทีเดียว(ขี้เกียจคำนวน ประมาณเอาแล้วกัน 555)

 

How To Install web.py in XAMPP

web.py คืออะไร

มันคือ Framework สำหรับการเขียนเว็บด้วยภาษา python คล้ายๆ PHP ครับ สามารถเข้าไปดูเพิ่มเติมได้ที่นี่ ถามว่าทำไมเราไม่ใช้ php ไปล่ะ คำตอบคือ Python เป็นภาษาที่ค่อนข้างง่ายสำหรับมือใหม่ ไม่สลับซับซ้อน มีการบังคับให้จัดรูปแบบให้สวยงาม เหมาะสำหรับมือใหม่มาก แล้วถามว่ามันมีข้อเสียไหม ณ ตอนนี้ที่เริ่มศึกษามันช้ากว่า php เป็น 100 เท่า ซึ่งผมพอเดาได้ว่าผลมากจากไหน คาดว่ามาจาก Zend Engine คงจะไป Optimize อะไรสักอย่างให้ครับ แล้วตัว py ยังไม่ได้ compile มันเลยช้า วิธีนี้เป็นวิธีบน Ubuntu นะครับ ถ้าใช้บน Windows ก็ต้องปรับเอานิดหน่อย ถ้าไม่ได้จริงๆก็ถามได้ครับ เดี๋ยวลองไปหาข้อมูลให้

แล้วเราจะลง web.py ใส่ XAMPP ได้ยังไงล่ะ?

ก่อนอื่นเราต้องลง web.py ก่อน

หากต้องการข้อมูลล่าสุด คลิกที่นี่ครับ

  1. เปิด Terminal
  2. สั่ง wget -O webpy.tar.gz https://github.com/webpy/webpy/tarball/master
  3. สั่ง tar zxvf webpy.tar.gz
  4. sudo python setup.py install

การปรับให้ใช้กับ XAMPP ได้

ต้องลง XAMPP ก่อน โดยสามารถหาวิธีได้จากที่นี่ครับ

  1. สร้าง folder ที่ต้างการใน /opt/lampp/htdocs/ เช่น webpy แล้วเข้า folder นั้น
  2. สร้าง .htaccess ขึ้นมา มีเนื้อหาดังนี้

ทดสอบการทำงาน

  1. สร้าง file ชื่ออะไรก็ได้ เช่น code.py
  2. ใส่เนื้อหาดังนี้
  3. ลองเข้าหน้าเว็บนั้นเช่น http://127.0.0.1/webpy/code.py/MIX

จบครับ

PHP: Lock File ไม่ให้คนอื่นมาอ่านหรือเขียน

การ lock file ใน php ทำเพื่อป้องกันไม่ให้คนอื่นมาอ่านหรือเขียน ในขณะที่เรากำลังอ่านหรือเขียนอยู่ โดยเราจะใช้ function ที่ชื่อว่า flock ตัว flock จะเป็นตัวจัดการว่ามีคนอ่านหรือเขียน file นี้อยู่หรือไม่ ประโยชน์ของมันคือการเขียนทีละครั้งจะทำให้ข้อมูลไม่เกิดข้อผิดพลาดกรณีที่ write 2 ตัวพร้อมกันและข้อมูลไม่เหมือนกันครับ แต่โทษของมันคือการ deadlock คือหากเราลืม unlock หรือไปไม่ถึงขั้นนั้นจะทำให้คนอื่นๆเขียนไม่ได้เช่นกันครับ

รูปแบบ Function flock()

อธิบายง่ายๆคือ

  • file_resurce คือตัวแปรที่มาจาก fopen อ่ะครับ
  • operation จะเป็นค่าคงตัวซึ่งเค้ากำหนดมาดังนี้ครับ
    LOCK_SH คือ ไม่ให้คนอื่นอ่าน
    LOCK_EX คือ ไม่ให้คนอื่นเขียน
    LOCK_UN คือปลดล็อค (แต่ถ้าใช้ lock ผมว่ามันกันได้ทั้งอ่านและเขียน)
    LOCK_NB คือบอกว่าไม่อนุญาติให้คนอื่นใช้งานตอนล็อคอยู่ทันที(ถ้าไม่ใส่ตัวนี้ คนอื่นจะรอจนกว่าจะ unlock ถึงจะอ่านเขียนได้ แต่ถ้าใส่จะ return false ทันที
  • wouldblock ไม่ทราบครับ ผมไม่ใช้

return ค่าเป็น true หากล็อคได้ และ false ถเาล็อคไม่ได้

ตัวอย่างการใช้

จาก code นี้ถ้าสั่งเรียก file นี้ 2 ครั้งติดๆกันจะเห็นว่าครั้งที่ 2 จะขึ้นว่าไม่สามารถ lock ได้ครับ