PHP도 이제 빌드가 가능하군요.
충격적이게도 이런 내용을 다룬 한글 웹페이지를 딱히 발견을 못해서...
간단하게나마 남겨봅니다.
phar-composer 라는 라이브러리를 사용해 빌드합니다.
설치방법은 repository에 기술되어 있으니 참고하시면 될듯합니다.
https://github.com/clue/phar-composer
가장 먼저 해야 할 것은 composer.json에 실행 파일을 지정하는 것 입니다.
최상위 레벨에 "bin"이라는 키로 추가를 합니다.
{
"require": {
"react/socket": "^1.11",
"react/http": "^1.6"
},
"require-dev": {
"clue/phar-composer": "^1.4"
},
....,
"bin":["bin/main"] <-이부분 입니다.
}
bin/main 에 php스크립트를 생성 해 줍니다.(bin에 넣은 내용과 정확히 동일한 파일명)
이 파일이 node의 index.js, spring boot의 SpringBootApplication 클래스 내 메인함수와 같은 기능을 한다고 보시면 되겠습니다.
reactphp의 기본 샘플코드를 사용해보겠습니다.
<?php
//bin/main
require "../vendor/autoload.php";
use React\Http\HttpServer as HttpServer;
use React\Socket\SocketServer as SocketServer;
use Psr\Http\Message\ServerRequestInterface as Request;
use React\Http\Message\Response as Response;
$http = new HttpServer(function (Request $request) {
return Response::plainText(
"Heelo React!\n"
);
});
$socket = new SocketServer('127.0.0.1:8080');
$http->listen($socket);
echo "server running at http://127.0.0.1:8080".PHP_EOL;
이제 phar-composer를 통해 빌드합니다.
참고로 build 대신 install을 한다면, 현재 os에 설치를 진행합니다.
$ phar-composer build /path/to/project /path/to/build/filename.phar
// phar-composer build [target] [dist]
성공적으로 빌드되었다면, dist로 지정한 패스에 마찬가지로 해당파일명으로 파일이 생성되었을겁니다.
실행권한을 줍니다.( php명령어를 통해 실행한다면, 실행권한도 필요 없습니다.)
아마 퍼미션 지정도 가능 할 것 같은데, 급하게 빌드해보느라 찾아보진 못했습니다.
$ chmod +x /path/to/dist/filename.phar
이제 phar파일을 실행시켜주세요.
$ php ./filename.phar
또는
$ ./filename.phar
//istall 을 하셨다면 기본값은 프로젝트 폴더명으로 명령어가 생성됩니다.
$ react-php
정상적으로 실행되었다면, 서버구동을 알리는 'server running at http://127.0.0.1:8080'이 뜨고,
CURL로 요청날릴 시 정상동작합니다.