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 adalahindex.handler, Function Compute memuat metodehandleryang didefinisikan diindex.phpdan menjalankan fungsi darihandler.$event: Parameter yang dilewatkan saat Anda memanggil fungsi. Nilai parameter ini adalah string. Fungsi PHP langsung menggunakan parametereventyang ditentukan. Anda dapat menguraieventdalam 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.
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
Masuk ke Konsol Function Compute. Di panel navigasi kiri, klik Functions.
Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik fungsi yang ingin Anda kelola.
Pada halaman detail fungsi, klik tab Code. Di editor kode, masukkan kode sampel di atas dan klik Deploy.
CatatanPada kode sampel di atas, penangan adalah metode
handlerdiindex.php. Jika penangan fungsi Anda berbeda, gunakan konfigurasi penangan aktual.Pada tab Code, klik ikon
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 } }Klik Test Function.
Setelah fungsi dieksekusi, konten dalam format JSON dikembalikan oleh fungsi, dan nilai
key1,key2, dankey3dicetak 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.phpdiunggah ke direktori exampledir darirandombucketdi OSS.CatatanGanti
endpoint,bucket,object, danfilePathdengan nilai-nilai sumber daya Anda yang sebenarnya.
Before you start
Konfigurasikan peran yang memiliki izin untuk mengakses OSS. Untuk informasi lebih lanjut, lihat Gunakan Peran Fungsi untuk Memberikan Izin Function Compute untuk Mengakses Layanan Cloud Lainnya.
Buat fungsi dalam runtime PHP. Untuk informasi lebih lanjut, lihat Buat Fungsi Acara.
Procedure
Masuk ke Konsol Function Compute. Di panel navigasi kiri, klik Functions.
Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik fungsi yang ingin Anda kelola.
Pada halaman detail fungsi, klik tab Code. Di editor kode, masukkan kode sampel di atas dan klik Deploy.
CatatanPada kode sampel di atas, penangan adalah metode
handlerdiindex.php. Jika penangan fungsi Anda berbeda, gunakan konfigurasi penangan aktual.Klik Test Function.
Setelah fungsi dieksekusi, hasil eksekusi
hello worlddikembalikan.
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
Masuk ke Konsol Function Compute. Di panel navigasi kiri, klik Functions.
Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik fungsi yang ingin Anda kelola.
Pada halaman detail fungsi, klik tab Konfigurasi. Di panel navigasi kiri, klik Triggers. Pada halaman Pemicu, peroleh titik akhir publik dari pemicu HTTP.
Jalankan perintah berikut dalam curl untuk memanggil fungsi:
curl -i "https://http-trigger-demo.cn-shanghai.fcapp.run" -d 'Hello FC!'PentingJika 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!