Translate

วันจันทร์ที่ 28 เมษายน พ.ศ. 2557

บินไปกับ Phalcon ...PHP Framework ที่เคลมตัวเองว่า...เร็วส์...แรงส์



ตั้งแต่ผมเขียน PHP มา และได้ผันตัวเองมาเริ่มใช้ Framework ได้ประมาณ 4 ปี ผมก็หลงรัก และติดใจกับ Codeigniter มาตลอด เพราะความที่เริ่มต้นได้เร็ว ง่าย และต่อยอดได้หลากหลาย มีอยู่เหมือนกันที่ไปศึกษา Framework อื่นๆ ที่เป็นรูปแบบ MVC เหมือนกันอย่าง Yii หรือ Laravel แต่ก็เป็นเพียงช่วงสั้นๆ แม้จะได้ลองเขียน และใช้งานจริง (งานที่รับทำฟรีแลนซ์ ส่วนใหญ่ไม่ใช่ Yii ก็ Codeigniter) อยู่บ้าง แต่ก็ไม่ได้เปลี่ยนใจจากความชื่นชมใน Codeigniter ไปใช้อย่างอื่นแต่อย่างใด

ผมได้ยินชื่อ Phalcon มาประมาณระยะหนึ่งแล้ว จากเว็บและหลายๆ แหล่ง ที่ยังไม่ได้ไปหาข้อมูล หรือลองเล่น เพราะไม่คิดจะเปลี่ยนว่าจะต้องเปลี่ยนใจไปจาก CI เพราะปัจจุบันก็ยังทำงานได้อยู่ แม้ว่า CI เองจะเริ่มตายลงก็ตาม (ผมอ้างอิงจาก Laravel นะ แต่เห็นเขาก็ยังไปของเขาเรื่อยๆ และ CI ก็เป็นจุดเริ่มต้นที่ดีในการเริ่มเขียน PHP แบบใช้ pattern MVC)

จากการตามดู First Commit ที่ Github ก็เดาว่า Phalcon ถือกำเนิดประมาณช่วงมกราคม ปี 2012 โดยคุณ andresgutierrez (เข้าใจว่าเป็นนามแฝงนะ)


จากนั้น Phalcon ก็ขยายตัวมาตลอด มีนักพัฒนาจากทั่วโลก มาร่วมด้วยช่วยกัน (อาจจะไม่ใหญ่เท่า CI) ทั้งทดสอบ แก้บั๊ก และเพิ่มเติม code เพราะอานุภาพแห่ง License แบบ New BSD License นั้นเอง

เมื่อ 2 ปีก่อน (2012) ผมเองก็ประสบปัญหาที่เกี่ยวข้องกับ performance ของ PHP เช่นกัน เพราะด้วยทรัพยากรด้าน hardware ที่จำกัด คือ นอกจากเป็น VM ware แล้ว ยังจำกัด Resource ด้วย ทำให้ผมต้องพยายามหาวิธีสารพัด เพื่อเพิ่มความเร็วของการใช้งาน ที่จะเพิ่มขึ้นอย่างสูงในช่วงระยะเวลาหนึ่ง ช่วงนั้นเป็นอะไรที่เก็บเกี่ยวความรู้ในการเขียน Code อย่างมาก Coding แบบไหนที่น่าจะทำให้ลด Header ของการเรียกใช้งาน ผมก็พยายามปรับวิธีการเขียนใหม่ เช่น ใช้ loop น้อยลง ใช้ตัวแปรน้อยลง ลด else block ที่ไม่จำเป็นลง หรือแม้กระทั่ง ใช้ single quote แทน double quote ในการใช้ตัวแปรแบบ string เพียวๆ

แต่นั่นก็เป็นส่วนเล็กๆ ที่ผมทำ กับ server เล็กๆ จุดๆ หนึ่งบนโลก ...ขณะเดียวกันนั้น ก็มีคนที่คิดว่าจะเพิ่ม Performance ของ PHP ขึ้นเช่นกัน แต่เขาใช้วิธีเปลี่ยนไปใช้ Framework ที่เป็น extension พิเศษเฉพาะที่เขียนด้วย C เสียเลย ซึ่งเป็นการแก้ปัญหาที่ตรงจุดกว่า เนื่องจากอย่างที่เรารู้กันอยู่ว่า PHP ที่เราใช้งานกันอยู่นั้น เป็นภาษาโปรแกรมแบบ Interpreted เหมือน Basic สมัยก่อน มันก็เพิ่มขั้นตอนในการแปลขึ้นมาอีกขั้นกว่าจะไปเป็นภาษาเครื่อง ตรงจุดนี้ก็ทำให้ Performance ลดลงได้ เมื่อเปลี่ยนมาเป็น Compile คำสั่งต่างๆ ของ Framework เสียก่อนเลย การใช้งานก็น่าจะเร็วขึ้นโข ...ใช่มั้ยล่ะ



ถ้าคุณเขาไปที่เว็บไซต์ http://phalconphp.com คุณจะพบกับตารางเปรียบเทียบนี้ ผมก็ไม่รู้ว่าถ้าเทียบกับ Yii จะเป็นยังไงเหมือนกัน และทำไมเขาไม่ลองเทียบออกมาดู (หรือว่าความเร็วก็ได้ใกล้ๆ กันก็ไม่รู้ เลยเอามาโชว์ไม่ได้) เรื่องความเร็วที่เพิ่มขึ้น สำหรับเว็บไซต์เล็กๆ น้อย ที่คนเข้าพร้อมกันประมาณ 50-100 คนต่อวินาที แล้ว อาจจะไม่ต่างกันเท่าไรนัก แต่ถ้าปริมาณของ user เยอะกว่านั้นล่ะ? ปัญหาความ "หน่วง" นี้จะเริ่มปรากฎให้เห็นเด่นชัดขึ้นทันที

เกริ่นมาสารพัด วันนี้มีข้อแนะนำในการติดตั้ง Phalcon นิดหน่อย ซึ่งภายในเว็บเขามีบอกอยู่แล้วล่ะ แถมยังมีภาษาไทยด้วยนะ http://phalconphp.com/th 

ผมใช้ xampp 1.8.3 ; PHP 5.5.6 ซึ่งทาง phalcon เขาบอกว่า ยิ่งใหม่ก็ยิ่งดีนะมีปัญหาตอนลง phalcon นิดหน่อยก็เรื่อง load ผิดไฟล์มา ถึงแม้เครื่องผมจะใช้ windows 64 บิต แต่ทาง xampp ยังเป็น 32 บิตอยู่ ก็ต้อง download ตัว 32 บิตมา และต้องเลือกด้วยว่า เวอร์ชั่น xampp ของเราที่เรา Download มานั้น เป็น non thread safe (NTS) หรือ thread safe (TS) (ถ้าสงสัยเรื่อง NTS กับ TS ตามไปดูที่นี่น่าจะเข้าใจ http://stackoverflow.com/questions/1623914/what-is-thread-safe-or-non-thread-safe-in-php )

ของผมโหลดแบบ TS มา ก็ต้องใช้ phalcon แบบ TS ครับ
1. ตอนแรกจะเป็น zip ไฟล์ แตกออกมาจะเป็น phalcon.dll
2. เอาไปใส่ไว้ใน /php/ext ที่ใช้งาน อย่างถ้าใช้ xampp เหมือนกัน ก็ใส่ที่ /xampp/php/ext จากนั้นก็ไปเพิ่มการเรียก extension เพิ่มเติมที่ไฟล์ /xampp/php/php.ini ตามนี้
extension=phalcon.dll
เพิ่มไว้ที่บรรทัดต่อจาก extension บรรทัดสุดท้ายก็ได้ครับ
3. จากนั้น Restart apache ใหม่เมื่อไปดูที่ phpinfo.php แล้วถ้า find หาคำว่า phalcon เจอ ก็พร้อมใช้งานแล้วครับ

เดี๋ยวลองใช้แล้วจะเอา concept การใช้งานมาลงก็แล้วกัน แต่เดี๋ยวนี้ programmer มีอะไรก็ควรไปที่ stackoverflow.com นะครับ ลองหาดูว่ามีคนติดแบบเดียวกันหรือเปล่า ช่วยได้เยอะจนจบโปรเจ็คเลยทีเดียวล่ะ ^_^


ไม่มีความคิดเห็น:

แสดงความคิดเห็น