커뮤니티

고용노동부, 산업인력공단과 함께하는 강원도 유일한 기업중심 IT전문교육기관 ICT융합캠퍼스만의 특별한교육입니다.
공인 IT숙련기술인의 다양한 접근방법으로 전문가다운 실무교육을 받을 수 있습니다.

Category

교육강좌

서버 PHP 고급 수업 - HipHop VM for PHP By Facebook

페이지 정보

작성자 관리자 댓글 0건 조회 5,863회 작성일 20-07-21 14:05

본문

HipHop VM for PHP By Facebook

 HipHop VM이란?

HipHop VM은 PHP로 만들어진 에플리케이션을 구동시키는 가상머신이다. 알려진 바와 같이 페이스북은 PHP로 만들어졌다. PHP는 빠른 웹개발의 장점이 있지만, 경쟁 언어들에 비해서 느리다는 단점이 있었다. 페이스북에서는 이를 극복하기 위해서 HipHop VM을 만들었다. 높은 퍼포먼스를 내는 것을 목적으로 개발되고 있고, 페이스북의 엔지니어들이 주도적으로 개발하고 있다. 줄여서 hhvm이라고 부른다. 

홈페이지

hhvm은 아직 개발중이기 때문에 레퍼런스가 풍부하지 않다. 아래는 hhvm에 대한 정보를 얻을 수 있는 채널들이다.

동작방식

요청이 요구하는 파일을 찾으면 SQLite 데이터베이스를 조회해서 해당 파일이 컴파일 되었는지를 확인한다. 만약 컴파일 되어 있지 않다면 컴파일을 하고 실행한다. 컴파일 되어 있다면 컴파일된 캐쉬를 실행한다. 컴파일 과정에서 약간의 로드가 발생한다. hhvm은 이렇게 특정 파일에 대한 요청이 있을 때 한번 컴파일을 하고, 그 이후부터는 컴파일된 결과를 리턴하는데 이러한 방식을 Just In Time(JIT) 방식의 컴파일 기법이라고 한다. 자바가 이런식으로 동작한다.

설치방법

각 플랫폼 별로 설치하는 방법은 아래 URL을 참고하자. 필자는 우분투 12.10 버전을 기준으로 설치 방법을 동영상으로 만들었다. 

https://github.com/facebook/hiphop-php/wiki/_pages

작동

서버모드로 동작

hhvm을 동작시키는 방법은 아래의 링크를 참조하자. 

https://github.com/facebook/hiphop-php/wiki/Running-HipHop-VM

다음 명령으로 hello.php 파일을 만든다. 

1
echo -e "<?php\n echo \"Hello Hiphop-PHP\";\n?>" > hello.php

다음 명령을 실행하면 hhvm이 실행된다. hhvm은 hhvm 가상머신을 동작시키는 명령이고, -m은 hhvm을 서버모드로 동작시키라는 의미다. 마지막의 ./는 hhvm의 document root로 현재 디렉토리를 사용한다는 의미다. 

1
sudo ~/dev/hiphop-php/hphp/hhvm/hhvm -m server ./

만약  hhvm이 설치된 ip가 192.168.125.143이라면 아래와 같이 접근해서 hello.php 파일을 실행할 수 있다. 

http://192.168.125.143/hello.php 

데몬으로 동작

서버모드는 명령을 실행시키고 중지할 때까지만 지속된다. 이것은 테스트 용도로는 적합 하지만 실제 서비스를 할 때는 daemon으로 동작시켜야 한다. -m daemon을 이용해서 데몬으로 동작시킬 수 있다. 데몬으로 동작시킬 때는 설정 파일을 사용해야 하는데 적당한 디렉토리에 아래와 hhvm.hdf 라는 이름의 파일을 위치시키고 아래와 같이 실행한다. 

1
sudo ~/dev/hiphop-php/hphp/hhvm/hhvm -m daemon --config hhvm.hdf

다음은 hhvm.hdf 파일의 내용이고 설정파일에 대한 자세한 설명은 RunTime options를 참고한다. 아래 내용은 /var/www를 document root로 하고, 80번 포트에서 hhvm이 대기하고 있겠다는 의미다. Jit=true는 Just In Time 기법으로 컴파일을 하겠다는 뜻이다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Server {
Port = 80
SourceRoot = /var/www/
}
Eval {
Jit = true
}
Log {
Level = Error
UseLogFile = true
File = /var/log/hhvm/error.log
Access {
* {
File = /var/log/hhvm/access.log
Format = %h %l %u %t \"%r\" %>s %b
}
}
}

Wordpress 설치

http://www.hiphop-php.com/wp/

  • 트위터로 보내기
  • 페이스북으로 보내기
  • 구글플러스로 보내기

답변목록

등록된 답변이 없습니다.