全部产品
Search
文档中心

Object Storage Service:Pemrosesan Sinkron (PHP SDK V2)

更新时间:Nov 09, 2025

Pemrosesan sinkron (x-oss-process) adalah metode di mana program harus menunggu tugas selesai sebelum dapat menjalankan tugas lainnya. Topik ini menjelaskan cara menggunakan PHP SDK V2 untuk pemrosesan sinkron dalam skenario seperti pemrosesan gambar dan dokumen.

Perhatian

  • Kode contoh dalam topik ini menggunakan Wilayah Hangzhou, Tiongkok (cn-hangzhou) sebagai contoh. Secara default, titik akhir publik digunakan. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang pemetaan antara wilayah OSS dan titik akhir, lihat Wilayah dan titik akhir OSS.

Kode contoh

Berikut adalah kode contoh yang menunjukkan cara menggunakan PHP SDK V2 untuk melakukan pengubahan ukuran gambar dan menyimpan gambar yang telah diproses ke bucket tertentu untuk persistensi.

<?php

// Impor file autoloader untuk memuat pustaka dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi argumen baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah tempat bucket berada. Parameter ini diperlukan.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Titik akhir yang dapat digunakan layanan lain untuk mengakses OSS. Parameter ini opsional.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket. Parameter ini diperlukan.
    "key" => ['help' => 'Nama objek', 'required' => True], // Nama objek. Parameter ini diperlukan.
];

// Hasilkan daftar opsi panjang untuk mengurai argumen baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan argumen baris perintah.
$options = getopt("", $longopts);

// Periksa apakah parameter yang diperlukan hilang.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna bahwa parameter yang diperlukan hilang.
        exit(1);
    }
}

// Dapatkan nilai argumen baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"];       // Nama objek.

// Muat kredensial, seperti AccessKeyId dan AccessKeySecret, dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();

// Tetapkan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Tetapkan wilayah.
$cfg->setRegion($region);

// Jika titik akhir disediakan, tetapkan titik akhir.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

// Bangun perintah pemrosesan gambar untuk mengubah lebar gambar menjadi 100 dan menyimpan gambar sebagai objek baru.
$process = sprintf("image/resize,w_100|sys/saveas,o_%s",
    base64_encode($key) // Enkode nama objek dalam Base64.
);

// Buat objek permintaan untuk memproses objek.
$request = new Oss\Models\ProcessObjectRequest(
    bucket: $bucket, // Nama bucket.
    key: $key         // Nama objek.
);

// Tetapkan perintah pemrosesan.
$request->process = $process;

// Panggil metode processObject untuk memproses objek.
$result = $client->processObject($request);

// Cetak hasilnya.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP dari tanggapan.
    'request id:' . $result->requestId . PHP_EOL .   // ID unik dari permintaan.
    'process result:' . var_export($result, true) . PHP_EOL // Hasil pemrosesan.
);

Skenario

Tambahkan watermark buta ke gambar

Anda dapat menggunakan fitur watermark buta untuk menambahkan watermark teks buta ke gambar.

<?php

// Impor file autoloader untuk memuat pustaka dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi argumen baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah tempat bucket berada. Parameter ini diperlukan.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Titik akhir yang dapat digunakan layanan lain untuk mengakses OSS. Parameter ini opsional.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket. Parameter ini diperlukan.
    "key" => ['help' => 'Nama objek', 'required' => True], // Nama objek. Parameter ini diperlukan.
];

// Hasilkan daftar opsi panjang untuk mengurai argumen baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan argumen baris perintah.
$options = getopt("", $longopts);

// Periksa apakah parameter yang diperlukan hilang.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna bahwa parameter yang diperlukan hilang.
        exit(1);
    }
}

// Dapatkan nilai argumen baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"];       // Nama objek.

// Muat kredensial, seperti AccessKeyId dan AccessKeySecret, dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();

// Tetapkan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Tetapkan wilayah.
$cfg->setRegion($region);

// Jika titik akhir disediakan, tetapkan titik akhir.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

// Tentukan konten watermark.
$content = "Copyright © Alibaba Cloud";

// Hasilkan watermark buta untuk gambar.
$encodedContent = base64_encode($content); // Enkode konten watermark dalam Base64.
$style = sprintf("image/blindwatermark,content_%s", $encodedContent); // Bangun gaya pemrosesan.
$targetImageName = "targetDir/target.jpg"; // Jalur gambar tujuan.
$process = sprintf(
    "%s|sys/saveas,o_%s,b_%s",
    $style,
    base64_encode($targetImageName), // Enkode nama gambar tujuan dalam Base64.
    base64_encode($bucketName)       // Enkode nama bucket dalam Base64.
);

// Buat objek permintaan untuk memproses objek.
$request = new Oss\Models\ProcessObjectRequest(
    bucket: $bucketName, // Nama bucket.
    key: $objectName,    // Nama objek.
    process: $process    // Instruksi pemrosesan.
);

// Panggil metode processObject untuk memproses objek.
$result = $client->processObject($request);

// Cetak hasilnya.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP dari tanggapan.
    'request id:' . $result->requestId . PHP_EOL .   // ID unik dari permintaan.
    'process result:' . var_export($result, true) . PHP_EOL // Hasil pemrosesan.
);

Referensi