[PHP] 백그라운드로 동시에 프로그램 실행

php 는 순차적으로 프로그램일 실행되기 때문에 여러 서버에 접속하여 결과를 받아오는 등의 프로세스에서 느린 서버 때문에 전체적인 프로그램 실행이 치제되는 경우가 발생한다. 이럴 때 AJAX와 같이 비동기 방식으로 프로그램을 실행하게 되면 동시에 여러 서버에 접속하여 결과를 가져오기 때문에 실행시간이 감소할 수 있다. 이를 위해 php의 exec()를 이용하는 간단한  테스트 코드를 아래와 같이 작성했다.

위 코드를 backgroudExec.php 파일로 저장하고 shell 에서 실행하게 되면 아래와 같이 추가적인 PHP 프로세스가 생성된다.

실행 결과로 로그 파일에는 아래와 같이 기록된다.

위와 같은 기능을 처리하게 위해 공개된 doorman 등의 라이브러리를 사용할 수 있다.

[PHP] Slack 채널로 메세지 전송

Slack은 지금 회사에 이직하면서 접했고 지금은 업무 처리에 많은 부분을 담당하고 있다. 최근의 서비스들이 그렇듯 Slack 역시 다양한 API를 제공하고 있는데 chat.postMessage 를 이용해 특정 채널로 메세지를 전송해보자. 아래 class를 사용하기 위해서는 Slack API에 사용될 Legacy token을 발급받아야 한다. Token은 https://api.slack.com/custom-integrations/legacy-tokens 페이지를 방문해 발급받을 수 있다.

위 class를 이용해 메세지를 발송하는 코드는 아래와 같다.

#general 은 실제 채널로 변경해야 한다.

자료

  1. https://api.slack.com/methods/chat.postMessage
  2. https://api.slack.com/custom-integrations/legacy-tokens

[PHP] Slimframework를 이용한 영카트5 상품정보 API 서버 구성

Slimframework(이하 Slim)를 이용한 RESTfull API 서버를 구성해보기 위해  영카트5의 상품정보를 제공하는 API 서버를 테스트했다. Slim은 이제 접하는 것이기 때문에 제대로 한 것인지는 확신이 없지만.. 일단 작동은 잘 되는 듯 하다. DB 관련 부분 때문에 코드가 길어졌는데 이 부분은 추후 어떻게 되지 않을까? 싶다. Slim설치 때는 composer를 사용한다.

우선 디렉토리 구성은 아래와 같다.

api 디렉토리 안에서 아래 명령어로 Slim을 설치했다.

Slim 설치가 완료된 후 api 디렉토리 안에 아래의 파일들을 생성한다. Read More

chrome headless 모드를 이용하여 랜더링된 html 소스 가져오기 #2

혼란하다. 혼란해!!

지난 번 포스트를 바탕으로 좀 더 기능 개선을 거친 버전이라고 할 수 있을 것 같다. 실제 서비스로 사용하기에는 어떨지 모르겠지만.. 브라우저로 접속해서 입력한 url 페이지에 접속해서 html 소스를 가져오도록 했다. nodejs와 기타 여러 모듈을 사용했는데.. nodejs는 책을 한 줄도 보지 않았기 때문에 뭔 소리인지 모르겠다.

우선 nodejs와 기타 모듈 설치를 진행한다.

Read More

chrome headless 모드를 이용하여 랜더링된 html 소스 가져오기

vus.js 등의 자바스크립트를 이용하여 웹페이지의 화면을 구성하는 경우가 많은데 이럴 경우 일반적인 방법으로는 실제 사용자가 보는 화면의 html 소스를 가져올 수가 없다. PhantomJS 등을 이용해서 처리를 할 수가 있으나 리눅스 크롬브라우저 59 버전부터는 headless 모드를 지원하기 때문에 이를 이용해서 랜더링된 페이지의 html 소스를 가져오기로 한다. 두 가지 방법을 시도했으며 각자의 선택으로 적당한 방법을 선택하면 된다.

–dump-dom 옵션을 이용한 방법

별도의 작업없이 크롬 설치만으로 사용할 수 있는 방법이다.

–disable-gpu 옵션은 최신 버전에서는 필요하지 않으나 오류가 발생한다면 추가하도록 한다. html 소스 코드를 파일로 저장하려면 위 명령어 끝에 > file.html 과 같이 추가한다. PHP를 이용하여 실행하기 위해서는 아래와 같이 코드를 작성한다.

자료
– https://blog.outsider.ne.kr/1291
https://developers.google.com/web/updates/2017/04/headless-chrome

Read More