PHP 액션 사용하기

Cloud Functions에서는 PHP 코드를 실행시킬 수 있는 액션 컨테이너를 제공합니다. PHP 7.1 버전을 기본으로 제공하며 독립된 환경에서 코드를 실행할 수 있습니다.

JavaScript의 NPM처럼 PHP의 패키지 매니저인 컴포저(Composer)를 사용하여 의존성을 관리할 수 있으며 의존성 라이브러리와 함께 패키징하여 액션을 생성할 수도 있습니다.

액션 생성하기

먼저 아래와 같이 이름과 장소를 포함한, "Hello World"를 출력하는 간단한 PHP 액션인 hello를 작성합니다.

<?php
function main(array $args) : array
{
    $name = $args["name"] ?? "World";
    $place = $args["place"] ?? "Naver";
    $greeting = "Hello $name in $place!";
    echo $greeting;
    return ["payload" => $greeting];
}

PHP 코드는 여러 개의 함수를 포함할 수 있지만 main 함수는 프로그램의 시작점으로서 반드시 선언되어야 합니다.

위에서 작성한 코드로 'hello'라는 이름의 액션을 생성합니다.

compute-15-2-501

의존성 파일을 패키징하여 액션 생성하기

코드를 작성하다 보면 하나의 액션 파일 이외의 의존 파일들을 함께 패키징해야 하는 경우가 있습니다. 이런 경우, 관련된 파일들을 하나로 압축하여 패키징하고 압축된 파일을 이용하여 패키징 된 액션을 생성할 수 있습니다.

기본 값으로 사용되는 main(args) 함수와 같이 액션 실행 시 진입점 역할을 하는 메인 함수는 index.php 파일 안에 반드시 정의되어있어야 합니다.

예를 들어 메인 액션에서 사용되는 함수들이 작성된 helper.php 파일과 함께 패키징하여 액션을 만들고 싶다면 아래의 명령어를 사용하면 됩니다.

  1. 액션과 관련된 파일들을 helloPHP.zip으로 압축합니다.

     zip -r helloPHP.zip index.php hello.php
    
  2. 이후 생성된 압축 파일을 사용하여 액션을 생성합니다.

컴포저(Composer) 의존성을 패키징하여 액션 생성하기

PHP 액션 코드를 작성할 때 의존성 관리 도구인 composer을 사용하여 여러 라이브러리를 사용하는 경우가 있습니다.

기본적으로 패키징하는 방법과 동일하게 vendor에 포함된 의존 모듈까지 함께 패키징하여 액션을 생성하고 실행시킬 수 있습니다. 역시 index.php 파일 안에 메인 함수가 정의되어 있어야 합니다.

예제

fzaninotto/faker 라이브러리를 추가하여 실제 주소와 유사한 fake 데이터를 생성하는 액션을 만드는 예제입니다.

  1. 먼저 composer 명령을 통해 라이브러리를 설치합니다.

     $ composer require fzaninotto/faker
    
  2. index.php 파일 이름으로 fake address를 반환하는 메인 함수를 정의합니다.

     <?php
     require __DIR__ . '/vendor/autoload.php';
    
     function main(array $args) : array
     {
         $faker = Faker\Factory::create();
         return ["address" => $faker->address];
     }
    
  3. vendor 폴더와 index.php 파일을 함께 압축합니다.

     $ zip -r composerPHP.zip vendor index.php
    
  4. 압축된 파일을 사용하여 액션을 등록합니다.

기본 파라미터 설정하기

매번 액션을 실행할 때마다 파라미터를 전달하는 대신, 특정 파라미터에 기본값을 지정할 수 있습니다. 위에서 생성한 hello 액션의 place 파라미터에, 기본 값을 등록해보도록 하겠습니다.

compute-15-2-105

액션 실행 시 파라미터 전달하기

액션 실행 시 입력으로 파라미터를 전달할 수 있습니다. Main 함수에 전달되는 파라미터는 JSON object 형식으로 전달됩니다.

파라미터는 액션 실행 시 직접 입력하거나, JSON 형식의 파일을 작성하여 전달할 수 있습니다. 파일을 통해 파라미터를 전달하는 경우에는 아래와 같은 JSON 형식의 파일을 작성해야 합니다.

compute-15-2-106

액션 런타임 정보

각 액션 컨테이너에는 기본 라이브러리들이 내장되어 있으며, 이 라이브러리들은 별도의 추가 작업 없이 임포트하여 사용하실 수 있습니다.

PHP 라이브러리

PHP 7.1 환경을 제공합니다. 액션 생성 시 명시적으로 PHP 액션 컨테이너를 생성할 수 있습니다.

  • bcmath
  • curl
  • gd
  • intl
  • mbstring
  • mysqli
  • pdo_mysql
  • pdo_pgsql
  • pdo_sqlite
  • soap
  • zip
  • guzzlehttp/guzzle v6.3.0
  • ramsey/uuid v3.6.1

연관 정보 바로가기

아래 가이드에서 연관 정보를 확인할 수 있습니다.

""에 대한 건이 검색되었습니다.

    ""에 대한 검색 결과가 없습니다.

    처리중...