[Hack] ์๊ฐ
Hack์ PHP๋ฅผ ๋ง๊ฐ์กฐํ ๋์ฐํ ํผ์ข
์ด๋ค.
PHP์ ํ์์ ์ผ๋ก ๊ตฌ๋ฆฐ ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ์ ์ต์ ํํ๊ธฐ ์ํด์ ์์ฒด์ ์ผ๋ก ๋ถ๋ฒ๊ฐ์กฐ์์ ์ ๊ฐํ ๊ฒ์ด๋ค.
๊ทธ๋์ PHP์ ํธํ๋์ง๋ ์๋ ๋ณ๊ฐ์ ์๋ช
์ฒด๋ค.
ํ์ด์ค๋ถ๊ณผ ์ฌ๋ ๋ฉ์ธ ๋ฐฑ์๋์ ์ฐ์ด๋ ๊ฒ์ผ๋ก ์ ๋ช
ํ๋ค.
ํ๋ถ์ด php ์ด๋ค๊ณ php ์ต๋น ํ๋ ์ฌ๋๋ค์ด ๋ง์๋ฐ, ์ฌ์ค ์ค๋ค์ด ์ฐ๋๊ฑด hack์ด๋ผ์ php ์ด๋ค๊ณ ํ๊ธฐ๋ ์ ๋งคํ๋ค.
2011๋ ์ ๋์๊ณ , ํ์ด์ค๋ถ์์ ์ง์ ๋ง๋ค๊ณ ๊ด๋ฆฌํ๋ค.
์ผ๋ฐ PHP์์ ์ฐจ์ด
์ผ๋จ JIT์ ๋นก์ธ๊ฒ ๋๋ฆฐ๋ค๋ ์ ์์ ์ฑ๋ฅ ์ต์ ํ๊ฐ ๋ง์ด ๋๋ค. ์ต๊ทผ ๋ฒ์ ์ ์์๋ PHP๋ JIT ์ต์ ํ๋ฅผ ๋๋ ค์ ์ด์ ๋ ์์ฃผ ํฐ ์ฐจ์ด๊ฐ ์๋ ๋ถ๋ถ์ ์๋์ง๋ง, ๊ณผ๊ฑฐ์๋ ๊ทธ๋ฌ๋ค.
ํ์ฌ๋ ์ผ๋ฐ PHP์ ๋น๊ตํ๋ฉด ๊ทผ์ํ๊ฒ ๋น ๋ฅธ ๋ถ๋ถ์ด ์๋ค.
์๋๋ PHP7๊ณผ ๋น๊ตํ ๋ฒค์น๋งํฌ๋ค.
https://www.wpoven.com/blog/hhvm-vs-php-7-performance-showdown-wordpress-nginx/
2019-01-28์ ์ถ์๋ v4.0.0 ๋ฒ์ ๋ถํฐ PHP ์ฝ๋ ํธํ์ฑ์ ํ๊ธฐํ๊ณ ๋
์ ๋
ธ์ ์ ๊ฑท๊ธฐ ์์ํ๋ค.
์ด๋์ ๋ ์ ์ฌ์ฑ์ ์์ง๋ง ๋ค๋ฅด๋ค.
HHVM ์ค์น
Hack์ HHVM์ด๋ผ๊ณ ํด์ ์์ฒด์ ์ธ ๊ฐ์๋จธ์ ํ๋ซํผ ์์์ ๋์ํ๋ค. HH๋ ๋๋๊ฒ๋ ํํฉ์ ์ถ์ฝ์ด๋ค.
windows๋ ์ง์ํ์ง ์๊ณ , ๋ฆฌ๋
์ค์ Mac๋ง ์ง์ํ๋ค.
๋ด ํ
์คํธ ํ๊ฒฝ์ ์ฐ๋ถํฌ 22๋ค.
์๋ ๋ช
๋ น์ ์คํํ๋ค.
sudo apt-get update &&
sudo apt-get install --yes software-properties-common apt-transport-https &&
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xB4112585D386EB94 &&
sudo add-apt-repository 'deb https://dl.hhvm.com/universal release main' &&
sudo apt-get update &&
sudo apt-get install --yes hhvm &&
hhvm --version

๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ด hhvm cli๊ฐ ์ค์น๋๋ฉด ๋ ๊ฒ์ด๋ค.


ํ๋ก์ ํธ ๊ตฌ์ฑํ๊ธฐ
ํด๋ ํ๋๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ์์ hhconfig๋ฅผ ์ถ๊ฐํ๋ค.
mkdir my_project
cd my_project
touch .hhconfig
hhconfig๋ ํด๋น ๋๋ ํฐ๋ฆฌ๊ฐ hack ํ๋ก์ ํธ์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์์ ์๋ ค์ฃผ๋ ๋งค๋ํ์คํธ ํ์ผ์ด๋ค.
nodejs์ package.json์ด๋ go์ go.mod, rust์ cargo.toml๊ณผ ๋น์ทํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
Hello World ํ๋ก๊ทธ๋จ
๊ทธ๋ฆฌ๊ณ ๋ค์ ์์ค์ฝ๋๋ฅผ .hack ํ์ฅ์๋ก ์์ฑํ๋ค.
use namespace HH\Lib\IO;
<<__EntryPoint>>
async function main(): Awaitable<void> {
await IO\request_output()->writeAllAsync("Hello World!\n");
}
์์ php์ ๋น๊ตํด์ ๊ฝค ์ด์ง์ ์ธ ๊ฒ์ ๋ณผ ์ ์๋ค.
EntryPoint ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ํตํด ์ง์
์ ์ ๋ช
์ํ๊ณ , ํด๋น ์ง์
์ ํจ์์์ ํ
์คํธ๋ฅผ ์ถ๋ ฅํ๋ค.
์ ๊ธฐ์ ์ถ๋ ฅํ๋ ํ
์คํธ๊ฐ ์ผ๋ฐ์ ์ผ๋ก client์๊ฒ ๋ฐํ๋๋ ์๋ต๊ฐ์ด ๋๋ค.
ํ์ ์ฒดํฌ
hh_client cli๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฒด์ ์ผ๋ก ๊ฐ๋ ฅํ ํ์
์ฒดํฌ ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์๋ค.
๋ฌธ์ ์์ผ๋ฉด ์ด๋ ๊ฒ ๋จ๊ณ

๋ญ๊ฐ ์๋ง๋๊ฒ ์์ผ๋ฉด ์๋ฌ๋ฅผ ๋จ๊ตฐ๋ค.

๋ก๊ทธ๊ฐ ๊ฝค ์น์ ํ ํธ์ด๋ค.
์คํํ๊ธฐ
hack ์ฝ๋ ์คํ๋ฒ์๋ ํฌ๊ฒ 2๊ฐ์ง๊ฐ ์๋ค.
ํน์ ํ์ผ์ ๊ทธ๋ฅ ์ฝ์๋ก ์คํํ๋ ๋ฒ์ด ์๋๋ฐ
๊ทธ๋ผ ์ฝ์์ ์ฐ๊ณ ์ผํ์ฑ ํ๋ก์ธ์ค๋ก ์ข
๋ฃ๋๋ค.
์๋ฒ๋ก ๊ตฌ๋ํ๋ ค๋ฉด ์ด๋ ๊ฒ ์ต์ ์ ์ฃผ๋ฉด ๋๋ค.
hhvm -m server -p 8080
๊ทธ๋ฌ๋ฉด ์๋ฒ๊ฐ ๋จ๊ณ
ํ์ผ๋ช ์ผ๋ก ๋ฐ๋ผ๊ฐ์ ์ ์ํ ์ ์๋ค.

์ ํ์ค
PHP์ ๋
์ ๋
ธ์ ์ ๊ฑท๊ณ ๋ ์์ง๋ง, ๋ณ์ ์ ์ธ์ด๋ ๊ธฐํ ์ ํ์ค๋ฅผ ์ด๋ฃจ๋ ๊ณจ์กฐ๋ ์ฌ์ ํ PHP์ ๋์ผํ๋ค.
์๋๋ ๊ทธ๋ฅ ๋ฌธ์์ด ๋ณ์ 2๊ฐ ๋๊ณ ํฉ์ณ์ ์ถ๋ ฅํ๋ ๊ฐ๋จํ ์์ ๋ค.

์ฐธ์กฐ
https://docs.hhvm.com/hack/getting-started/getting-started
https://slack.engineering/taking-php-seriously/