จุดกำเนิดของ HHVM คือ HipHop PHP Compiler (HPHPc) ระบบอันเลื่องชื่อของ Facebook ที่คอมไพล์โค้ดภาษา PHP ออกมาเป็น Executable Binary จนทำให้ทุกอย่างทำงานเร็วมากและกิน Resource น้อยกว่าทั่วไปมาก (ก็มันเป็น Native นี่นา) จึงถูกใช้บนเว็บ facebook.com มาช้านานและช่วยประหยัดค่าใช้จ่ายของบริษัทไปได้เยอะมาก

แต่แล้ว HPHPc ถึงจะเทพปานนั้น แต่ก็มีปัญหาอยู่มากมาย หลักๆเลยคือไม่สนับสนุนภาษา PHP เต็มรูปแบบ บางคำสั่งก็ได้ บางคำสั่งก็ไม่ได้ รวมถึงคำสั่งที่ใช้บ่อยในการเขียน Advance PHP Programming ในยุคหลังอย่าง create_function, eval ก็ใช้งานไม่ได้เช่นกัน ผนวกกับปัญหาอีกมากมายก่ายกอง เช่นกิน Resource ในการคอมไพล์มาก ดีบั๊กยาก บลาๆๆๆ จนส่งผลให้ท้ายที่สุด Facebook ก็ประกาศเซย์กู้ดบายกับเจ้า HPHPc ไป

แล้ว Facebook ก็หายไปแว้บนึง โผล่มาอีกทีกับความเท่สุดบรรยาย ด้วยการเปิดตัว HHVM (HipHop Virtual Machine) ที่ทำตัวเป็น Interpreter ทำงานแทน PHP Interpreter เช่นพวก php5-fpm เลยโดยสมบูรณ์ ทำหน้าที่รับโค้ดเข้ามา แล้วแปลงเป็น Bytecode (HHBC) ก่อนจะแปลงเป็น Binary เพื่อรันแบบ Native อีกทีหนึ่งด้วย JIT ผลคือไม่ต้องมานั่งคอมไพล์ก่อนรันเพราะมันคอมไพล์แบบ Runtime ให้ แถมยังคงซึ่งประสิทธิภาพที่เหนือกว่า PHP ทั่วไปอย่างมหาศาล จากการที่มันเป็น Native และ I/O Non Blocking ล่าสุดประสิทธิภาพของมันแซง HPHPc ไปเป็นที่เรียบร้อยแล้วตั้งแต่ปีก่อน


การติดตั้ง HHVM ผ่าน package manager

sudo apt-get install software-properties-common

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449

sudo add-apt-repository 'deb http://dl.hhvm.com/ubuntu trusty main'

sudo apt-get update && sudo apt-get install hhvm

หากยังไม่มี Web Server ติตตั้งอยู่ ให้ทำการติตตั้ง apache2 ด้วย

apt-get install apache2

Running PHP Web Scripts ด้วย HHVM โดยใช้ Web Server คุยกับ HHVM ผ่าน FastCGI

sudo /usr/share/hhvm/install_fastcgi.sh

sudo /etc/init.d/hhvm restart

หากเราต้องการให้ hhvm start at boot ด้วยก็ใช้คำสั่ง

update-rc.d hhvm defaults

ทดสอบว่าตอนนี้ Web Server เราใช้ HHVM อยู่หรือไม่โดยการสร้างไฟล์ info.php ที่ /var/www

sudo vi /var/www/info.php

Edit ไฟล์ดังนี้

<?php

echo  defined('HHVM_VERSION')?'Using HHVM':'Not using HHVM';

แล้วเข้าไปดูที่หน้า Browser URL: http://x.x.x.x/info.php หาก Web Server กำลังใช้้ HHVM อยู่จะแสดงผลลัพธ์

ที่นี้ลองเขียน php แสดง hello world ดู

sudo vi /var/www/hello.php

Edit ไฟล์ดังนี้

<?php

echo "\nHello World\n\n";

จะได้ผลลัพธ์ดังนี้

Comments are closed.