

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

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

L'[Aurora DSQL Connector per PHP è un connettore PHP](https://github.com/awslabs/aurora-dsql-connectors/tree/main/php/pdo_pgsql) basato su [https://www.php.net/manual/en/ref.pdo-pgsql.php](https://www.php.net/manual/en/ref.pdo-pgsql.php)che integra l'autenticazione IAM per connettere le applicazioni PHP ai cluster DSQL di Amazon Aurora.

Il connettore gestisce la generazione di token, la configurazione SSL e la gestione delle connessioni in modo che tu possa concentrarti sulla logica dell'applicazione.

## Informazioni sul connettore
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-about"></a>

L'Aurora DSQL Connector per PHP aggiunge un livello di autenticazione `PDO_PGSQL` che gestisce la generazione di token IAM, consentendoti di connetterti ad Aurora DSQL utilizzando i flussi di lavoro PDO esistenti. Amazon Aurora DSQL richiede l'autenticazione IAM con token a tempo limitato e il connettore gestisce automaticamente la generazione di token per te.

### Cos'è l'autenticazione Aurora SQL?
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-authentication"></a>

In Aurora DSQL, l’**autenticazione** prevede:
+ **Autenticazione IAM:** tutte le connessioni utilizzano l’autenticazione basata su IAM con token a tempo limitato
+ **Generazione di token**: il connettore genera token di autenticazione utilizzando AWS credenziali e questi token hanno una durata configurabile

L'Aurora DSQL Connector per PHP comprende questi requisiti e genera automaticamente token di autenticazione IAM quando stabilisce connessioni.

### Funzionalità
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-features"></a>
+ **Autenticazione IAM automatica**: gestisce la generazione e l'aggiornamento dei token Aurora DSQL
+ **Costruito su `PDO_PGSQL`**: racchiude l'estensione PostgreSQL standard per PHP
+ **Integrazione perfetta**: funziona con i flussi di lavoro PDO esistenti
+ **Applicazione SSL**: utilizza sempre SSL con `verify-full` negoziazione TLS modale e diretta
+ **Rilevamento automatico della regione**: estrae la AWS regione dal nome host del cluster Aurora DSQL
+ AWS supporto per **le credenziali: supporta profili** e fornitori di credenziali personalizzate AWS 
+ **Riprova OCC: attiva un nuovo tentativo** ottimistico di controllo simultaneo con backoff e jitter esponenziali
+ **Registrazione PSR-3**: registrazione compatibile per la diagnostica dei nuovi tentativi

## Applicazione di esempio
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-example-application"></a>

Per un esempio completo, vedi l'[applicazione di esempio](https://github.com/awslabs/aurora-dsql-connectors/tree/main/php/pdo_pgsql/example) su GitHub.

## Guida rapida di avvio
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-quick-start"></a>

### Requisiti
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-requirements"></a>
+ PHP 8.2 o successivo
+ `ext-pdo_pgsql`estensione
+ [Accesso a un cluster Aurora DSQL](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/getting-started.html)
+ AWS credenziali configurate (tramite AWS CLI, variabili di ambiente o ruoli IAM)

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

Aggiungi il pacchetto al tuo progetto:

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

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

### Connessione basata sulla configurazione
<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();
});
```

### Formato della stringa di connessione
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-connection-string"></a>

Per script semplici o quando si preferisce la sintassi della stringa di connessione, il connettore supporta `postgres://` stringhe di `postgresql://` connessione con parametri di query specifici di Aurora DSQL:

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

Parametri di interrogazione supportati:,,,. `region` `profile` `tokenDurationSecs` `ormPrefix`

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

Aurora DSQL utilizza il controllo ottimistico della concorrenza (OCC). Quando due transazioni modificano gli stessi dati, la prima che esegue il commit vince e la seconda riceve un errore OCC.

Il nuovo tentativo OCC è facoltativo. Impostato `occMaxRetries` nella configurazione per abilitare il nuovo tentativo automatico con backoff e jitter esponenziali:

```
$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");
});
```

**Importante**  
`transaction()``rollBack()`gestisce/internamente. `beginTransaction()` `commit()` Il callback dovrebbe contenere solo le operazioni del database ed essere sicuro di riprovare.

## Opzioni di configurazione
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-configuration"></a>

Il connettore accetta `postgres://` anche stringhe di `postgresql://` connessione con parametri di interrogazione per la configurazione. Parametri di interrogazione supportati: `region``profile`,`tokenDurationSecs`, e`ormPrefix`.


| Campo | Tipo | Predefinita | Description | 
| --- | --- | --- | --- | 
| host | string | (obbligatorio) | Endpoint del cluster o ID del cluster a 26 caratteri | 
| region | ?string | null(rilevato automaticamente) | AWS regione; obbligatorio se host è un ID del cluster | 
| user | string | "admin" | Utente del database | 
| database | string | "postgres" | Nome del database | 
| port | int | 5432 | Database port (Porta del database) | 
| profile | ?string | null | AWS nome del profilo per le credenziali | 
| credentialsProvider | ?\$1Closure | null | fornitore di AWS credenziali personalizzate | 
| tokenDurationSecs | int | 900(15 min) | Durata della validità del token in secondi | 
| occMaxRetries | ?int | null(disabilitato) | Numero massimo di tentativi OCC predefinito per e exec() transaction() | 
| ormPrefix | ?string | null | Prefisso ORM preceduto da application\$1name | 
| logger | ?LoggerInterface | null | Logger PSR-3 per avvisi e diagnosi di nuovi tentativi | 

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

Il connettore gestisce automaticamente l'autenticazione Aurora DSQL generando token utilizzando credenziali. AWS Se non fornisci la AWS regione, il connettore la analizza a partire dal nome host.

Per ulteriori informazioni sull'autenticazione in Aurora DSQL, vedere. [Autenticazione e autorizzazione per Aurora DSQL](authentication-authorization.md)

### Amministratore e utenti normali
<a name="SECTION_program-with-dsql-connector-for-php-pdo-pgsql-admin-vs-regular"></a>
+ Gli utenti denominati «admin» utilizzano automaticamente i token di autenticazione dell'amministratore
+ Tutti gli altri utenti utilizzano token di autenticazione regolari
+ Il connettore genera i token in modo dinamico per ogni connessione