全部产品
Search
文档中心

Function Compute:Penanganan

更新时间:Jul 06, 2025

Anda dapat menggunakan penangan PHP untuk menanggapi peristiwa yang diterima dan menjalankan logika bisnis yang sesuai. Topik ini menjelaskan konsep dan struktur penangan PHP serta memberikan contoh.

Apa itu penangan?

Penangan untuk suatu fungsi di Function Compute adalah metode untuk memproses permintaan dalam kode fungsi. Saat fungsi dipanggil, Function Compute menggunakan penangan yang dikonfigurasi untuk memproses permintaan. Anda dapat mengonfigurasi penangan dengan menentukan parameter Handler di Konsol Function Compute.

Penangan fungsi PHP di Function Compute mengikuti format NamaFile.NamaMetode. Sebagai contoh, jika nama file Anda adalah main.php dan nama metode Anda adalah handler, maka penanganannya adalah main.handler.

Untuk informasi lebih lanjut tentang fungsi di Function Compute dan operasi terkait, lihat Buat Fungsi Acara.

Konfigurasi penangan harus sesuai dengan spesifikasi konfigurasi Function Compute. Spesifikasi konfigurasi bervariasi berdasarkan jenis penangan.

Tanda tangan untuk penangan

Berikut adalah contoh kode yang menunjukkan tanda tangan sederhana untuk penangan:

<?php

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

Deskripsi Parameter:

  • handler: Nama metode untuk memproses permintaan. Metode ini sesuai dengan nilai yang ditentukan untuk parameter Request Handler di Konsol Function Compute. Sebagai contoh, jika nilai parameter Handler untuk suatu fungsi Function Compute adalah index.handler, Function Compute memuat metode handler yang didefinisikan di index.php dan menjalankan fungsi dari handler.

  • $event: Parameter yang dilewatkan saat Anda memanggil fungsi. Nilai parameter ini adalah string. Fungsi PHP langsung menggunakan parameter event yang ditentukan. Anda dapat mengurai event dalam fungsi berdasarkan kebutuhan bisnis Anda. Sebagai contoh, jika data input adalah string JSON, Anda dapat mengubah string JSON menjadi array.

  • $context: Informasi konteks, seperti ID permintaan dan kredensial sementara. Informasi ini dapat digunakan dalam kode Anda.

Catatan

Jika Anda ingin menggunakan pemicu HTTP atau nama domain kustom untuk mengakses fungsi, peroleh struktur permintaan sebelum mendefinisikan respons HTTP. Untuk informasi lebih lanjut, lihat Gunakan Pemicu HTTP untuk Memanggil Fungsi.

Contoh 1: Mengurai parameter berformat JSON

Sample code

Saat Anda melewatkan parameter berformat JSON ke fungsi di Function Compute, Function Compute meneruskan parameter tersebut, dan Anda perlu mengurai parameter tersebut dalam kode. Kode sampel berikut memberikan contoh cara mengurai peristiwa 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;
}

Before you start

Buat fungsi dalam runtime PHP. Untuk informasi lebih lanjut, lihat Buat Fungsi Acara.

Procedure

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

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

  3. Pada halaman detail fungsi, klik tab Code. Di editor kode, masukkan kode sampel di atas dan klik Deploy.

    Catatan

    Pada kode sampel di atas, penangan adalah metode handler di index.php. Jika penangan fungsi Anda berbeda, gunakan konfigurasi penangan aktual.

  4. Pada tab Code, klik ikon down di sebelah Test Function, klik Configure Test Parameters dari daftar drop-down, masukkan parameter uji dalam kode sampel berikut, lalu klik OK.

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

    Setelah fungsi dieksekusi, konten dalam format JSON dikembalikan oleh fungsi, dan nilai key1, key2, dan key3 dicetak dalam output log.

Contoh 2: Membaca dan menulis sumber daya OSS menggunakan pasangan AccessKey sementara

Sample code

Anda dapat menggunakan pasangan AccessKey sementara yang disediakan oleh Function Compute untuk mengakses Object Storage Service OSS. Kode sampel:

<?php

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

function handler($event, $context) {
    /*
      Pasangan AccessKey akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi di Function Compute merupakan operasi berisiko tinggi. Kami merekomendasikan Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan pemeliharaan rutin.
      Kami merekomendasikan Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya di 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"] menentukan untuk memperoleh pasangan AccessKey sementara dari $context. Ini mencegah pengkodean keras informasi sensitif seperti kata sandi.

  • Kode di atas menunjukkan bahwa file /code/index.php diunggah ke direktori exampledir dari randombucket di OSS.

    Catatan

    Ganti endpoint, bucket, object, dan filePath dengan nilai-nilai sumber daya Anda yang sebenarnya.

Before you start

Procedure

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

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

  3. Pada halaman detail fungsi, klik tab Code. Di editor kode, masukkan kode sampel di atas dan klik Deploy.

    Catatan

    Pada kode sampel di atas, penangan adalah metode handler di index.php. Jika penangan fungsi Anda berbeda, gunakan konfigurasi penangan aktual.

  4. Klik Test Function.

    Setelah fungsi dieksekusi, hasil eksekusi hello world dikembalikan.

Contoh 3: Menjalankan perintah eksternal

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

Jika Anda ingin menggunakan alat non-PHP, seperti skrip shell dan file yang dikompilasi dalam C++ atau Go di fungsi PHP Anda, Anda dapat mengemas dan mengunggah alat serta kode tersebut bersama-sama, lalu menjalankan perintah eksternal untuk menggunakan alat-alat ini. Metode umum untuk memanggil perintah eksternal meliputi exec, system, dan shell_exec.

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

<?php

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

Contoh 4: Gunakan pemicu HTTP untuk memanggil fungsi

Kode sampel

<?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 "Permintaan tidak berasal dari Pemicu HTTP, 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("Tangkap exception: " . $e->getMessage());
      return "Permintaan tidak berasal dari Pemicu HTTP, event: " . $event;
  }
}

Sebelum memulai

Gunakan kode sampel di atas untuk membuat fungsi dalam runtime PHP. Buat pemicu HTTP untuk fungsi tersebut. Untuk informasi lebih lanjut, lihat BuatFungsi Acara dan Konfigurasikan Pemicu HTTP.

Prosedur

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

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

  3. Pada halaman detail fungsi, klik tab Konfigurasi. Di panel navigasi kiri, klik Triggers. Pada halaman Pemicu, peroleh titik akhir publik dari pemicu HTTP.

  4. Jalankan perintah berikut dalam curl untuk memanggil fungsi:

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

    • Jika parameter Authentication Method dari pemicu HTTP diatur ke Signature Authentication atau JWT Authentication, Anda dapat menggunakan metode tanda tangan atau metode otentikasi JWT untuk memanggil fungsi. Untuk informasi lebih lanjut, lihat Otentikasi.

Kesalahan yang mungkin terjadi

Kode sampel ini dapat dipanggil menggunakan pemicu HTTP atau nama domain kustom. Jika Anda menggunakan operasi API tetapi parameter uji yang dikonfigurasikan tidak sesuai dengan persyaratan format permintaan pemicu HTTP, kesalahan akan dilaporkan.

Sebagai contoh, respons berikut dikembalikan jika Anda memanggil fungsi dengan mengklik Test Function di Konsol Function Compute setelah Anda mengonfigurasi parameter permintaan sebagai "Hello, FC!".

Permintaan tidak berasal dari Pemicu HTTP, event: Hello FC!