全部产品
Search
文档中心

Function Compute:Penangan acara

更新时间:Dec 18, 2025

Topik ini menjelaskan struktur penangan acara dalam lingkungan runtime PHP dan memberikan contoh.

Tanda tangan untuk penangan acara

Kode sampel berikut menggambarkan tanda tangan untuk penangan acara.

<?php

function handler($event, $context) {
  return 'hello world';
}
Deskripsi parameter:
  • handler: Nama metode. Metode ini sesuai dengan nilai yang ditentukan untuk parameter Request Handler di Function Compute console. Sebagai contoh, jika nilai parameter Request Handler untuk fungsi Function Compute adalah index.handler, Function Compute memuat fungsi handler yang didefinisikan di index.php dan mengeksekusi fungsi dari fungsi handler.
  • $event: Parameter yang dilewatkan saat Anda memanggil fungsi. Nilai parameter ini bertipe String. Fungsi PHP langsung menggunakan parameter event yang ditentukan. Anda dapat menguraikan event dalam fungsi berdasarkan kebutuhan bisnis Anda. Sebagai contoh, jika data input adalah string JSON, Anda dapat mengonversi string JSON menjadi array.
  • $context: Informasi runtime dari suatu fungsi, seperti ID permintaan dan kredensial identitas sementara. Anda dapat menggunakan informasi runtime dalam kode Anda.

Contoh 1: Mengurai parameter berformat JSON

Sample code

Saat Function Compute melewatkan parameter berformat JSON yang telah Anda konfigurasi, Anda harus mengurai parameter tersebut dalam kode. Kode sampel berikut memberikan contoh cara mengurai event yang berada dalam format 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;
}

Prerequisites

Fungsi dengan lingkungan runtime PHP telah dibuat. Untuk informasi lebih lanjut, lihat Buat Fungsi.

Procedure

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

  2. Di bilah navigasi atas, pilih wilayah. Pada halaman Services, klik layanan yang diinginkan.

  3. Pada halaman Functions, klik nama fungsi yang diinginkan.

  4. Pada halaman Function Details, klik tab Code, masukkan kode sampel sebelumnya di editor kode, lalu klik Deploy.
    Catatan Pada kode sampel sebelumnya, handler adalah metode handler di index.php. Jika Anda menentukan parameter handler yang berbeda, gunakan file dan metode aktual.
  5. Pada tab Code, klik ikon down di sebelah Test Function, pilih Configure Test Parameters dari daftar drop-down, masukkan parameter uji berikut, lalu klik OK.
    {
      "key1": "value1",
      "key2": "value2",
      "key3": {
        "v1": true,
        "v2": "bye",
        "v3": 1234
      }
    }
  6. Klik Test Function.
    Setelah eksekusi selesai, respons menunjukkan bahwa konten dalam format JSON dikembalikan oleh fungsi, dan konten key1, key2, dan key3 dicetak di output log.

Contoh 2: Membaca dan menulis sumber daya Object Storage Service (OSS) menggunakan pasangan AccessKey sementara

Sample code

Anda dapat menggunakan pasangan kunci sementara yang disediakan oleh Function Compute untuk mengakses Object Storage Service (OSS). Contoh:

<?php

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

function handler($event, $context) {
    /*
      Pasangan AccessKey akun Alibaba Cloud dapat digunakan untuk mengakses semua operasi API. Menggunakan kredensial ini untuk melakukan operasi di Function Compute merupakan operasi berisiko tinggi. Kami merekomendasikan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan pemeliharaan rutin.
      Kami merekomendasikan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey di kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya di bawah akun Anda mungkin terganggu.
      Dalam contoh ini, ID AccessKey dan Rahasia AccessKey diperoleh dari konteks.
    */
    $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__ . ": GAGAL\n");
        printf($e->getMessage() . "\n");
        return $e->getMessage();
    }
    return 'hello world';
}
Deskripsi:
  • $creds = $context["credentials"]: Mendapatkan pasangan AccessKey sementara dari $context. Ini mencegah hard encoding pada informasi sensitif seperti kata sandi.
  • Kode sebelumnya menunjukkan bahwa file /code/index.php diunggah ke direktori exampledir dari randombucket di OSS.
    Catatan Ganti endpoint, bucket, object, dan filePath dengan nama sumber daya aktual.

Prerequisites

Procedure

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

  2. Di bilah navigasi atas, pilih wilayah. Pada halaman Services, klik layanan yang diinginkan.

  3. Pada halaman Functions, klik nama fungsi yang diinginkan.

  4. Pada halaman Function Details, klik tab Code, masukkan kode sampel sebelumnya di editor kode, lalu klik Deploy.
    Catatan Pada kode sampel sebelumnya, handler adalah metode handler di index.php. Jika Anda menentukan parameter handler yang berbeda, gunakan file dan metode aktual.
  5. Klik Test Function.
    Setelah fungsi dieksekusi, hasil eksekusi hello world dikembalikan.

Contoh 3: Memanggil perintah eksternal

Anda dapat menggunakan program PHP untuk membuat proses fork untuk memanggil perintah eksternal.

Jika Anda ingin menggunakan alat non-PHP, seperti skrip shell dan file yang dapat dieksekusi yang dikompilasi dalam C++ atau Go di fungsi PHP Anda, Anda dapat mengemas dan mengunggah alat dan kode bersama-sama, lalu menjalankan perintah eksternal untuk menggunakan alat ini. Anda dapat menggunakan metode berikut untuk menjalankan perintah eksternal: exec, system, dan shell_exec.

Kode sampel berikut digunakan untuk memanggil perintah ls -halt di Linux dan menghasilkan detail file di direktori saat ini.

<?php

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