All Products
Search
Document Center

Function Compute:Handlers

Last Updated:Apr 24, 2026

Anda dapat menggunakan handler PHP untuk merespons event dan mengeksekusi logika bisnis. Topik ini menjelaskan konsep, struktur, dan contoh handler PHP.

Apa itu handler

Handler untuk fungsi FC adalah metode dalam kode fungsi Anda yang memproses permintaan. Ketika fungsi FC Anda dipanggil, Function Compute menjalankan handler yang telah Anda tentukan. Anda dapat mengonfigurasi handler di Function Compute console dengan mengatur parameter Handler.

Untuk fungsi PHP di FC, handler harus dalam format filename.methodname. Misalnya, jika file Anda bernama main.php dan metodenya bernama handler, maka handlernya adalah main.handler.

Untuk informasi lebih lanjut tentang mendefinisikan fungsi FC, lihat Create an event-triggered function.

Konfigurasi handler harus sesuai dengan spesifikasi konfigurasi Function Compute. Spesifikasi konfigurasi bervariasi tergantung pada tipe handler.

Handler signature

Kode berikut mendefinisikan signature handler sederhana.

<?php

function handler($event, $context) {
  return 'hello world';
}

Berikut ini penjelasan parameter-parameternya:

  • handler: Nama metode. Ini sesuai dengan Handler yang dikonfigurasi di Function Compute console. Misalnya, jika Handler untuk fungsi FC diatur ke index.handler, Function Compute memuat fungsi handler yang didefinisikan dalam index.php dan mulai mengeksekusi dari fungsi handler.

  • $event: Parameter yang Anda kirimkan saat memanggil fungsi. Tipe datanya adalah string. Fungsi PHP langsung menggunakan parameter event yang ditentukan tanpa preprocessing apa pun. Anda dapat mengurai event dalam fungsi Anda sesuai kebutuhan. Misalnya, jika data masukan berupa string JSON, Anda dapat mengonversinya menjadi Array.

  • $context: Berisi informasi runtime tentang fungsi, seperti ID permintaan dan kredensial sementara. Anda dapat menggunakan informasi ini dalam kode Anda.

Catatan

Jika Anda ingin menggunakan HTTP trigger atau nama domain kustom untuk mengakses fungsi, peroleh struktur request terlebih dahulu sebelum mendefinisikan respons HTTP. Untuk informasi lebih lanjut, lihat Use an HTTP trigger to invoke a function.

Contoh 1: Mengurai parameter berformat JSON

Sample Code

Function Compute meneruskan parameter berformat JSON sebagai string mentah, yang harus Anda uraikan dalam kode Anda. Kode contoh berikut menunjukkan cara mengurai event berformat JSON.

<?php

function handler($event, $context) {
  $v = json_decode($event, true);
  var_dump($v['key1']);
  var_dump($v['key2']);
  var_dump($v['key3']);
  return $v;
}

Prasyarat

Anda telah membuat fungsi yang menggunakan waktu proses PHP. Untuk informasi lebih lanjut, lihat Create an event-triggered function.

Prosedur

  1. Masuk ke Function Compute console. Di panel navigasi sebelah kiri, pilih Function Management > Functions.

  2. Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik fungsi target.

  3. Di halaman detail fungsi, klik tab Code, masukkan kode contoh ke dalam editor kode, lalu klik Deploy.

    Catatan

    Dalam kode contoh, handler adalah metode handler dalam index.php. Jika handler fungsi Anda dikonfigurasi secara berbeda, perbarui nama file dan metode agar sesuai dengan konfigurasi Anda.

  4. Di tab Code, klik ikon down di sebelah kanan Test Function, pilih Configure Test Parameters dari daftar drop-down, masukkan parameter uji contoh berikut, lalu klik OK.

    {
      "key1": "value1",
      "key2": "value2",
      "key3": {
        "v1": true,
        "v2": "bye",
        "v3": 1234
      }
    }
  5. Klik Test Function.

    Setelah fungsi dieksekusi, fungsi tersebut mengembalikan konten berformat JSON, dan nilai key1, key2, dan key3 dicetak ke log.

Contoh 2: Mengakses resource OSS secara aman

Sample Code

Anda dapat menggunakan kredensial sementara dari Function Compute untuk mengakses Object Storage Service (OSS). Kode berikut menunjukkan contohnya.

<?php

use OSS\OssClient;
use OSS\Core\OssException;

function handler($event, $context) {
    /*
      Pasangan AccessKey Akun Alibaba Cloud memberikan izin penuh untuk semua operasi API. Kami menyarankan Anda menggunakan RAM user untuk panggilan API dan maintenance rutin.
      Untuk mengurangi risiko kebocoran AccessKey, kami menyarankan agar Anda tidak menyematkan ID AccessKey dan AccessKey Secret secara langsung dalam kode proyek Anda.
      Contoh ini menunjukkan cara memperoleh kredensial dari context.
    */
    $creds = $context["credentials"];
    $accessKeyId = $creds["accessKeyId"];
    $accessKeySecret = $creds["accessKeySecret"];
    $securityToken = $creds["securityToken"];
    $endpoint = "https://oss-cn-hangzhou-internal.aliyuncs.com";
    $bucket= "randombucket";
    $object = "exampledir/index.php";
    $filePath = "/code/index.php";

    try{
        $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false, $securityToken);
        $ossClient->uploadFile($bucket, $object, $filePath);
    } catch(OssException $e) {
        printf(__FUNCTION__ . ": FAILED\n");
        printf($e->getMessage() . "\n");
        return $e->getMessage();
    }
    return 'hello world';
}

Penjelasan kode contoh sebagai berikut:

  • $creds = $context["credentials"]: Memperoleh kredensial sementara dari parameter $context. Praktik ini menghindari penyematan informasi sensitif seperti kredensial secara langsung dalam kode Anda.

  • Kode di atas mengunggah file /code/index.php ke direktori exampledir dalam bucket randombucket di OSS.

    Catatan

    Ganti endpoint, bucket, object, dan filePath dengan nilai resource aktual Anda.

Prasyarat

Prosedur

  1. Masuk ke Function Compute console. Di panel navigasi sebelah kiri, pilih Function Management > Functions.

  2. Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik fungsi target.

  3. Di halaman detail fungsi, klik tab Code, masukkan kode contoh ke dalam editor kode, lalu klik Deploy.

    Catatan

    Dalam kode contoh, handler adalah metode handler dalam index.php. Jika handler fungsi Anda dikonfigurasi secara berbeda, perbarui nama file dan metode agar sesuai dengan konfigurasi Anda.

  4. Klik Test Function.

    Setelah fungsi dieksekusi, fungsi tersebut mengembalikan hello world.

Contoh 3: Memanggil perintah eksternal

Program PHP Anda juga dapat fork proses untuk memanggil perintah eksternal.

Jika fungsi PHP Anda perlu menggunakan alat yang ditulis dalam bahasa lain, seperti skrip shell atau executable yang dikompilasi dalam C++ atau Go, Anda dapat mengemas alat tersebut bersama kode fungsi Anda dan mengunggahnya secara bersamaan. Anda kemudian dapat memanggil alat-alat tersebut dengan menjalankan perintah eksternal dari fungsi Anda. Metode umum untuk memanggil perintah eksternal meliputi exec, system, dan shell_exec.

Kode contoh berikut menjalankan perintah Linux ls -halt untuk mencantumkan isi detail direktori /code.

<?php

function handler($event, $context) {
  return shell_exec("ls -halt /code");
}        

Contoh 4: Memanggil fungsi menggunakan HTTP trigger

Sample code

<?php

function handler($event, $context) {
  $logger = $GLOBALS['fcLogger'];
  $logger->info('hello world');
  $logger->info('receive event: ' . $event);
  
  try {
    $evt = json_decode($event, true);
    if (is_null($evt['body'])) {
      return "The request did not come from an HTTP Trigger, event: " . $event;
    }
    $body = $evt['body'];
    if ($evt['isBase64Encoded']) {
      $body = base64_decode($evt['body']);
    }
    return array(
      "statusCode" => 200,
      'headers' => array("Content-Type" => "text/plain"),
      'isBase64Encoded' => false,
      "body" => $body
    );
  } catch (Exception $e) {
      $logger->error("Caught exception: " . $e->getMessage());
      return "The request did not come from an HTTP Trigger, event: " . $event;
  }
}

Prasyarat

Anda telah membuat fungsi yang menggunakan waktu proses PHP dan HTTP trigger. Untuk informasi lebih lanjut, lihat Create an event-triggered function dan Configure an HTTP trigger.

Prosedur

  1. Masuk ke Function Compute console. Di panel navigasi sebelah kiri, pilih Function Management > Functions.

  2. Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik fungsi target.

  3. Di halaman detail fungsi, klik tab Trigger untuk menemukan titik akhir publik HTTP trigger.

  4. Jalankan perintah cURL berikut untuk memanggil fungsi.

    curl -i "https://http-trigger-demo.cn-shanghai.fcapp.run" -d 'Hello FC!'
    Penting
    • Jika Authentication Method untuk HTTP trigger diatur ke No Authentication, Anda dapat langsung menggunakan Postman atau cURL untuk memanggil fungsi. Untuk informasi lebih lanjut, lihat Steps.

    • Jika Authentication Method HTTP trigger adalah Signature Authentication, JWT Authentication, atau Bearer Authentication, Anda harus menggunakan metode autentikasi yang sesuai untuk memanggil fungsi. Untuk informasi lebih lanjut, lihat Authentication and authorization.

Analisis error

Kode contoh ini mendukung pemanggilan menggunakan HTTP trigger atau nama domain kustom. Jika Anda menguji fungsi dari konsol dengan event yang tidak sesuai dengan format permintaan HTTP trigger, terjadi error.

Misalnya, jika Anda memanggil fungsi di konsol, atur parameter permintaan ke "Hello, FC!", lalu klik Test Function, fungsi akan mengembalikan tanggapan berikut:

The request did not come from an HTTP Trigger, event: Hello FC!