Pengambilan skalar adalah fitur indeks OSS yang memanfaatkan metadata objek untuk membantu Anda menemukan objek yang memenuhi kondisi tertentu, seperti nama objek, ETag, kelas penyimpanan, ukuran, dan waktu modifikasi terakhir, dari banyak objek dalam bucket. Topik ini menjelaskan cara menggunakan PHP SDK V2 untuk melakukan pengambilan skalar.
Perhatian
Kode contoh dalam topik ini menggunakan ID Wilayah Hangzhou, Tiongkok
cn-hangzhousebagai contoh. Secara default, titik akhir publik digunakan. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, Anda dapat menggunakan titik akhir internal. Untuk informasi lebih lanjut tentang pemetaan antara wilayah yang didukung oleh OSS dan titik akhir, lihat Wilayah dan titik akhir OSS.Topik ini memberikan contoh cara membaca kredensial akses dari variabel lingkungan. Untuk lebih banyak contoh tentang cara mengonfigurasi kredensial akses, lihat Konfigurasikan kredensial akses.
Untuk mengirim permintaan OSS menggunakan PHP SDK, Anda harus menginisialisasi OSSClient. Topik ini memberikan contoh cara membuat OSSClient menggunakan konfigurasi default. Untuk lebih banyak contoh tentang cara mengonfigurasi klien, lihat Konfigurasikan klien.
Kode contoh
Aktifkan fitur pengambilan skalar
Kode berikut memberikan contoh cara mengaktifkan fitur pengambilan skalar untuk bucket. Setelah fitur ini diaktifkan, OSS membuat indeks metadata untuk bucket dan semua objek di dalamnya. Setelah indeks metadata dibuat, OSS secara hampir real-time melacak dan memindai file baru dalam bucket serta membuat indeks metadata untuk file tersebut.
<?php
// Impor file autoloader untuk memastikan bahwa library dependensi dapat dimuat dengan benar.
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 wajib.
"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 wajib.
];
// Konversi deskripsi argumen ke format opsi panjang yang diperlukan oleh getopt.
// Tanda titik dua (:) setelah setiap argumen menunjukkan bahwa argumen tersebut memerlukan nilai.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Parsing argumen baris perintah.
$options = getopt("", $longopts);
// Periksa apakah argumen yang diperlukan telah ditentukan.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan dari argumen.
echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
exit(1); // Jika argumen yang diperlukan tidak ditentukan, keluar dari program.
}
}
// Ekstrak nilai dari argumen yang telah diparsing.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
// Muat informasi kredensial dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca Access Key ID dan Access Key Secret dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tetapkan penyedia kredensial.
$cfg->setRegion($region); // Tetapkan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Jika titik akhir disediakan, tetapkan titik akhir.
}
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Buat objek OpenMetaQueryRequest untuk mengaktifkan fitur pengambilan skalar untuk bucket.
$request = new Oss\Models\OpenMetaQueryRequest(
bucket: $bucket
);
// Jalankan operasi untuk mengaktifkan fitur pengambilan skalar.
$result = $client->openMetaQuery($request);
// Cetak hasil dari pengaktifan fitur pengambilan skalar.
printf(
'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Contohnya, 200 menunjukkan bahwa permintaan berhasil.
'request id:' . $result->requestId . PHP_EOL // ID permintaan, yang digunakan untuk debugging atau melacak permintaan.
);
Dapatkan informasi pustaka indeks metadata
Kode berikut memberikan contoh cara mendapatkan informasi indeks metadata dari bucket yang ditentukan.
<?php
// Impor file autoloader untuk memastikan bahwa library dependensi dapat dimuat dengan benar.
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 wajib.
"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 wajib.
];
// Konversi deskripsi argumen ke format opsi panjang yang diperlukan oleh getopt.
// Tanda titik dua (:) setelah setiap argumen menunjukkan bahwa argumen tersebut memerlukan nilai.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Parsing argumen baris perintah.
$options = getopt("", $longopts);
// Periksa apakah argumen yang diperlukan telah ditentukan.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan dari argumen.
echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
exit(1); // Jika argumen yang diperlukan tidak ditentukan, keluar dari program.
}
}
// Ekstrak nilai dari argumen yang telah diparsed.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
// Muat informasi kredensial dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca Access Key ID dan Access Key Secret dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tetapkan penyedia kredensial.
$cfg->setRegion($region); // Tetapkan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Jika titik akhir disediakan, tetapkan titik akhir.
}
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Buat objek GetMetaQueryStatusRequest untuk mendapatkan status kueri metadata dari bucket.
$request = new Oss\Models\GetMetaQueryStatusRequest(
bucket: $bucket
);
// Jalankan operasi untuk mendapatkan status kueri metadata.
$result = $client->getMetaQueryStatus($request);
// Cetak hasil dari mendapatkan status kueri metadata.
printf(
'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Contohnya, 200 menunjukkan bahwa permintaan berhasil.
'request id:' . $result->requestId . PHP_EOL . // ID permintaan, yang digunakan untuk debugging atau melacak permintaan.
'meta query status:' . var_export($result->metaQueryStatus, true) . PHP_EOL // Status fitur kueri metadata, seperti diaktifkan atau dinonaktifkan.
);
Kueri objek yang memenuhi kondisi tertentu
Kode berikut memberikan contoh cara menggunakan fitur pengambilan skalar untuk menanyakan objek yang memenuhi kondisi tertentu dan mencantumkan informasi objek berdasarkan bidang dan metode pengurutan yang ditentukan.
<?php
// Impor file autoloader untuk memastikan bahwa library dependensi dapat dimuat dengan benar.
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 wajib.
"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 wajib.
];
// Konversi deskripsi argumen ke format opsi panjang yang diperlukan oleh getopt.
// Tanda titik dua (:) setelah setiap argumen menunjukkan bahwa argumen tersebut memerlukan nilai.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Parsing argumen baris perintah.
$options = getopt("", $longopts);
// Periksa apakah argumen yang diperlukan telah ditentukan.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan dari argumen.
echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
exit(1); // Jika argumen yang diperlukan tidak ditentukan, keluar dari program.
}
}
// Ekstrak nilai dari argumen yang telah diparsed.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
// Muat informasi kredensial dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca Access Key ID dan Access Key Secret dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tetapkan penyedia kredensial.
$cfg->setRegion($region); // Tetapkan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Jika titik akhir disediakan, tetapkan titik akhir.
}
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Buat objek DoMetaQueryRequest untuk melakukan operasi kueri metadata.
$request = new \AlibabaCloud\Oss\V2\Models\DoMetaQueryRequest(
bucket: $bucket,
metaQuery: new \AlibabaCloud\Oss\V2\Models\MetaQuery(
maxResults: 5, // Jumlah maksimum hasil yang akan dikembalikan.
query: "{'Field': 'Size','Value': '1048576','Operation': 'gt'}", // Kondisi kueri: objek yang ukurannya lebih besar dari 1 MB.
sort: 'Size', // Urutkan berdasarkan ukuran objek.
order: \AlibabaCloud\Oss\V2\Models\MetaQueryOrderType::ASC, // Urutkan secara ascending.
aggregations: new \AlibabaCloud\Oss\V2\Models\MetaQueryAggregations( // Operasi agregasi
aggregations: [
new \AlibabaCloud\Oss\V2\Models\MetaQueryAggregation(
field: 'Size', // Bidang ukuran objek.
operation: 'sum' // Operasi agregasi: jumlah.
),
new \AlibabaCloud\Oss\V2\Models\MetaQueryAggregation(
field: 'Size', // Bidang ukuran objek.
operation: 'max' // Operasi agregasi: nilai maksimum.
),
]
)
)
);
// Lakukan operasi kueri metadata.
$result = $client->doMetaQuery($request);
// Cetak hasil dari kueri metadata.
printf(
'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Contohnya, 200 menunjukkan bahwa permintaan berhasil.
'request id:' . $result->requestId . PHP_EOL . // ID permintaan, yang digunakan untuk debugging atau melacak permintaan.
'result:' . var_export($result, true) . PHP_EOL // Hasil kueri, yang berisi objek yang cocok dan data agregat mereka.
);
Nonaktifkan fitur pengambilan skalar
Kode berikut memberikan contoh cara menonaktifkan fitur pengambilan skalar untuk bucket yang ditentukan.
<?php
// Impor file autoloader untuk memastikan bahwa library dependensi dapat dimuat dengan benar.
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 wajib.
"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 wajib.
];
// Konversi deskripsi argumen ke format opsi panjang yang diperlukan oleh getopt.
// Tanda titik dua (:) setelah setiap argumen menunjukkan bahwa argumen tersebut memerlukan nilai.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Parsing argumen baris perintah.
$options = getopt("", $longopts);
// Periksa apakah argumen yang diperlukan telah ditentukan.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan dari argumen.
echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
exit(1); // Jika argumen yang diperlukan tidak ditentukan, keluar dari program.
}
}
// Ekstrak nilai dari argumen yang telah diparsed.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
// Muat informasi kredensial dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca Access Key ID dan Access Key Secret dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tetapkan penyedia kredensial.
$cfg->setRegion($region); // Tetapkan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Jika titik akhir disediakan, tetapkan titik akhir.
}
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Buat objek CloseMetaQueryRequest untuk menonaktifkan fitur pengambilan untuk bucket.
$request = new \AlibabaCloud\Oss\V2\Models\CloseMetaQueryRequest(
bucket: $bucket
);
// Jalankan operasi untuk menonaktifkan fitur pengambilan.
$result = $client->closeMetaQuery($request);
// Cetak hasil dari menonaktifkan fitur pengambilan.
printf(
'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Contohnya, 200 menunjukkan bahwa permintaan berhasil.
'request id:' . $result->requestId . PHP_EOL // ID permintaan, yang digunakan untuk debugging atau melacak permintaan.
);
Referensi
Untuk informasi lebih lanjut tentang pengambilan skalar, lihat Pengambilan Skalar.
Untuk informasi lebih lanjut tentang operasi API untuk pengindeksan data, lihat Pengindeksan Data.
Untuk kode contoh lengkap untuk pengambilan skalar, lihat Contoh GitHub.