

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Konektor Aurora DSQL untuk PHP `PDO_PGSQL`
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql"></a>

Konektor [Aurora DSQL untuk PHP adalah konektor PHP](https://github.com/awslabs/aurora-dsql-connectors/tree/main/php/pdo_pgsql) yang dibangun di atas [https://www.php.net/manual/en/ref.pdo-pgsql.php](https://www.php.net/manual/en/ref.pdo-pgsql.php)yang mengintegrasikan otentikasi IAM untuk menghubungkan aplikasi PHP ke cluster Amazon Aurora DSQL.

Konektor menangani pembuatan token, konfigurasi SSL, dan manajemen koneksi sehingga Anda dapat fokus pada logika aplikasi Anda.

## Tentang konektornya
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-about"></a>

Konektor Aurora DSQL untuk PHP menambahkan lapisan otentikasi di atasnya `PDO_PGSQL` yang menangani pembuatan token IAM, memungkinkan Anda untuk terhubung ke Aurora DSQL menggunakan alur kerja PDO yang ada. Amazon Aurora DSQL memerlukan otentikasi IAM dengan token terbatas waktu, dan konektor secara otomatis mengelola pembuatan token untuk Anda.

### Apa itu otentikasi Aurora DSQL?
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-authentication"></a>

**Dalam Aurora DSQL, otentikasi melibatkan:**
+ **Otentikasi IAM**: Semua koneksi menggunakan otentikasi berbasis IAM dengan token terbatas waktu
+ **Generasi Token**: Konektor menghasilkan token otentikasi menggunakan AWS kredensyal, dan token ini memiliki masa pakai yang dapat dikonfigurasi

Konektor Aurora DSQL untuk PHP memahami persyaratan ini dan secara otomatis menghasilkan token otentikasi IAM saat membuat koneksi.

### Fitur
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-features"></a>
+ **Otentikasi IAM otomatis** - Menangani pembuatan dan penyegaran token Aurora DSQL
+ **Dibangun di atas `PDO_PGSQL`** - Membungkus ekstensi PostgreSQL standar untuk PHP
+ **Integrasi mulus** - Bekerja dengan alur kerja PDO yang ada
+ **Penegakan SSL** - Selalu menggunakan SSL dengan `verify-full` mode dan negosiasi TLS langsung
+ **Deteksi otomatis wilayah** - Ekstrak AWS wilayah dari nama host cluster Aurora DSQL
+ AWS dukungan **kredensyal - Mendukung** AWS profil dan penyedia kredensyal khusus
+ Coba lagi **OCC - Coba lagi** kontrol konkurensi optimis dengan backoff eksponensial dan jitter
+ Pencatatan **PSR-3 - Pencatatan** yang kompatibel untuk diagnostik coba lagi

## Contoh aplikasi
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-example-application"></a>

Untuk contoh lengkap, lihat [contoh aplikasi](https://github.com/awslabs/aurora-dsql-connectors/tree/main/php/pdo_pgsql/example) di GitHub.

## Panduan memulai cepat
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-quick-start"></a>

### Persyaratan
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-requirements"></a>
+ PHP 8.2 atau yang lebih baru
+ `ext-pdo_pgsql`perpanjangan
+ [Akses ke cluster Aurora DSQL](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/getting-started.html)
+ AWS kredensyal yang dikonfigurasi (melalui AWS CLI, variabel lingkungan, atau peran IAM)

## Penginstalan
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-installation"></a>

Tambahkan paket ke proyek Anda:

```
composer require awslabs/aurora-dsql-pdo-pgsql
```

## Penggunaan
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-usage"></a>

### Koneksi berbasis konfigurasi
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-config-connection"></a>

```
<?php

require_once 'vendor/autoload.php';

use Aws\AuroraDsql\PdoPgsql\AuroraDsql;
use Aws\AuroraDsql\PdoPgsql\DsqlConfig;

$config = new DsqlConfig(
    host: 'your-cluster.dsql.us-east-1.on.aws',
    occMaxRetries: 3
);
$pdo = AuroraDsql::connect($config);

// Read
$stmt = $pdo->query('SELECT 1 AS result');
$row = $stmt->fetch(PDO::FETCH_ASSOC);
echo "Connected: {$row['result']}\n";

// Transactional write with automatic OCC retry
$id = $pdo->transaction(function (PDO $conn): string {
    $stmt = $conn->prepare('INSERT INTO users (name) VALUES (?) RETURNING id');
    $stmt->execute(['Alice']);
    return $stmt->fetchColumn();
});
```

### Format string koneksi
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-connection-string"></a>

Untuk skrip sederhana atau ketika Anda lebih suka sintaks string koneksi, konektor mendukung `postgres://` dan `postgresql://` koneksi string dengan parameter kueri khusus Aurora DSQL:

```
$pdo = AuroraDsql::connectFromDsn(
    'postgres://admin@your-cluster.dsql.us-east-1.on.aws/postgres?region=us-east-1'
);
```

Parameter kueri yang didukung: `region``profile`,`tokenDurationSecs`,,`ormPrefix`.

### Coba lagi OCC
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-occ-retry"></a>

Aurora DSQL menggunakan kontrol konkurensi optimis (OCC). Ketika dua transaksi memodifikasi data yang sama, yang pertama melakukan kemenangan dan yang kedua menerima kesalahan OCC.

Coba lagi OCC adalah opt-in. Setel `occMaxRetries` dalam konfigurasi untuk mengaktifkan percobaan ulang otomatis dengan backoff dan jitter eksponensial:

```
$config = new DsqlConfig(
    host: 'your-cluster.dsql.us-east-1.on.aws',
    occMaxRetries: 3
);
$pdo = AuroraDsql::connect($config);

// Single statements are automatically retried via exec()
$pdo->exec("CREATE INDEX ASYNC ON users (email)");

// Multi-statement transactions are retried via transaction()
$pdo->transaction(function (PDO $conn) {
    $conn->exec("UPDATE accounts SET balance = balance - 100 WHERE id = 1");
    $conn->exec("UPDATE accounts SET balance = balance + 100 WHERE id = 2");
});
```

**penting**  
`transaction()`mengelola`beginTransaction()`/`commit()`/`rollBack()`secara internal. Callback Anda seharusnya hanya berisi operasi database dan aman untuk dicoba lagi.

## Opsi konfigurasi
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-configuration"></a>

Konektor juga menerima `postgres://` dan `postgresql://` menghubungkan string dengan parameter kueri untuk konfigurasi. Parameter kueri yang didukung: `region``profile`,`tokenDurationSecs`,, dan`ormPrefix`.


| Bidang | Tipe | Default | Deskripsi | 
| --- | --- | --- | --- | 
| host | string | (wajib) | Titik akhir cluster atau ID cluster 26-char | 
| region | ?string | null(terdeteksi otomatis) | AWS wilayah; diperlukan jika host adalah ID cluster | 
| user | string | "admin" | Pengguna basis data | 
| database | string | "postgres" | Nama basis data | 
| port | int | 5432 | Port basis data | 
| profile | ?string | null | AWS nama profil untuk kredensyal | 
| credentialsProvider | ?\$1Closure | null | Penyedia AWS kredensyal kustom | 
| tokenDurationSecs | int | 900(15 menit) | Durasi validitas token dalam hitungan detik | 
| occMaxRetries | ?int | null(dinonaktifkan) | Percobaan ulang OCC maks default untuk dan exec() transaction() | 
| ormPrefix | ?string | null | Awalan ORM diawali application\$1name | 
| logger | ?LoggerInterface | null | PSR-3 logger untuk peringatan dan diagnostik coba lagi | 

## Autentikasi
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-auth"></a>

Konektor secara otomatis menangani otentikasi Aurora DSQL dengan menghasilkan token menggunakan kredensyal. AWS Jika Anda tidak memberikan AWS wilayah, konektor menguraikannya dari nama host.

Untuk informasi lebih lanjut tentang otentikasi di Aurora DSQL, lihat. [Otentikasi dan otorisasi untuk Aurora DSQL](authentication-authorization.md)

### Admin vs pengguna biasa
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-admin-vs-regular"></a>
+ Pengguna bernama “admin” secara otomatis menggunakan token otentikasi admin
+ Semua pengguna lain menggunakan token otentikasi reguler
+ Konektor menghasilkan token secara dinamis untuk setiap koneksi