All Products
Search
Document Center

Function Compute:Handler

Last Updated:Apr 01, 2026

Handler adalah titik masuk yang dipanggil Function Compute saat fungsi Anda dijalankan. Bagian berikut mencakup tanda tangan handler PHP, cara kerja $event dan $context, serta empat contoh praktis: penguraian input JSON, mengakses Object Storage Service (OSS) dengan kredensial temporary, menjalankan perintah eksternal, dan menangani permintaan pemicu HTTP.

Pemberian nama handler

Handler PHP mengikuti format namafile.metode. Sebagai contoh, jika file Anda bernama main.php dan metodenya adalah handler, atur bidang Handler menjadi main.handler.

Saat Function Compute menjalankan fungsi, metode yang ditentukan dalam Handler dimuat dari file .php yang sesuai. Misalnya, index.handler memberi tahu Function Compute untuk memuat metode handler dari file index.php.

Untuk mengatur atau memperbarui nama handler, buka Konsol Function Compute dan edit bidang Handler untuk fungsi Anda.

Tanda tangan handler

Setiap handler PHP menerima dua parameter:

<?php

function handler($event, $context) {
    return 'hello world';
}
ParameterTipeDeskripsi
$eventstringMuatan input yang diteruskan saat fungsi dijalankan. Function Compute meneruskan nilai tersebut apa adanya — uraikan dalam kode Anda sesuai kebutuhan (misalnya, gunakan json_decode untuk input JSON).
$contextarrayKonteks waktu proses, termasuk ID permintaan dan kredensial temporary.
Untuk menggunakan pemicu HTTP atau nama domain kustom, baca badan permintaan dari $event sebelum menyusun tanggapan HTTP. Lihat Use an HTTP trigger to invoke a function.

Contoh

Contoh 1: Uraikan input JSON

Saat fungsi menerima string JSON sebagai input, gunakan json_decode untuk mengonversinya menjadi array PHP.

<?php

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

Langkah-langkah

Sebelum memulai, buat fungsi dengan runtime PHP. Lihat Create an event function.

  1. Masuk ke Konsol Function Compute. Di panel navigasi sebelah kiri, klik Functions.

  2. Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik fungsi yang ingin Anda kelola.

  3. Pada tab Code, tempel kode contoh ke editor lalu klik Deploy.

    Kode contoh ini mengasumsikan handler-nya adalah index.handler. Jika fungsi Anda menggunakan handler berbeda, sesuaikan nama file dan nama metode tersebut.
  4. Klik dropdown di samping Test Function, pilih Configure Test Parameters, masukkan JSON berikut, lalu klik OK.

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

Fungsi ini mengembalikan objek JSON yang telah diurai. Output log menampilkan nilai key1, key2, dan key3.

Contoh 2: Akses OSS dengan kredensial temporary

Function Compute menyuntikkan kredensial temporary ke dalam $context saat waktu proses. Gunakan kredensial ini untuk mengakses OSS tanpa melakukan hardcoding ID AccessKey atau Rahasia AccessKey di kode Anda.

<?php

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

function handler($event, $context) {
    // Ambil kredensial temporary dari objek konteks.
    // Jangan pernah melakukan hardcoding ID AccessKey atau Rahasia AccessKey di kode Anda —
    // hal ini dapat membocorkan kredensial dan berisiko mengompromikan seluruh sumber daya di akun Anda.
    $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';
}

Kode di atas mengunggah /code/index.php ke awalan exampledir/ di randombucket. Ganti endpoint, bucket, object, dan filePath dengan nilai yang sesuai untuk sumber daya Anda.

Langkah-langkah

Sebelum memulai, pastikan Anda telah:

  1. Masuk ke Konsol Function Compute. Di panel navigasi sebelah kiri, klik Functions.

  2. Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik fungsi yang ingin Anda kelola.

  3. Pada tab Code, tempel kode contoh ke editor lalu klik Deploy.

    Kode contoh ini mengasumsikan handler-nya adalah index.handler. Jika fungsi Anda menggunakan handler berbeda, sesuaikan nama file dan nama metode tersebut.
  4. Klik Test Function.

Jika fungsi berhasil dijalankan, fungsi akan mengembalikan hello world.

Contoh 3: Jalankan perintah eksternal

PHP dapat membuat proses fork untuk menjalankan perintah eksternal. Ini berguna ketika fungsi Anda bergantung pada alat non-PHP — seperti skrip shell atau biner C++/Go — yang dikemas bersama kode fungsi Anda.

Fungsi PHP umum untuk menjalankan perintah eksternal: exec, system, dan shell_exec.

Contoh berikut menjalankan ls -halt dan mengembalikan daftar direktori /code:

<?php

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

Contoh 4: Tangani permintaan pemicu HTTP

Saat fungsi dijalankan melalui pemicu HTTP, Function Compute meneruskan permintaan HTTP sebagai string terenkripsi JSON dalam $event. Uraikan badan permintaan tersebut dan kembalikan tanggapan terstruktur dengan statusCode, headers, isBase64Encoded, dan body.

<?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 [
            "statusCode"      => 200,
            "headers"         => ["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;
    }
}

Langkah-langkah

Sebelum memulai, pastikan Anda telah:

  1. Masuk ke Konsol Function Compute. Di panel navigasi sebelah kiri, klik Functions.

  2. Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik fungsi yang ingin Anda kelola.

  3. Pada tab Configurations, klik Triggers di panel navigasi sebelah kiri. Salin Titik akhir publik dari pemicu HTTP tersebut.

  4. Jalankan fungsi dengan curl:

    curl -i "https://http-trigger-demo.cn-shanghai.fcapp.run" -d 'Hello FC!'
Penting
  • Jika Authentication Method diatur ke No Authentication, jalankan fungsi langsung dengan Postman atau curl.

  • Jika Authentication Method diatur ke Signature Authentication atau JWT Authentication, gunakan metode autentikasi yang sesuai. Lihat Authentication.

Kemungkinan error

Handler ini dirancang untuk pemanggilan melalui pemicu HTTP atau domain kustom. Jika Anda menjalankannya melalui Test Function di konsol dengan string biasa sebagai parameter uji (misalnya, "Hello, FC!"), penguraian JSON gagal dan fungsi mengembalikan:

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

Langkah selanjutnya